Java 未由if语句定义的变量

Java 未由if语句定义的变量,java,arrays,string,variables,if-statement,Java,Arrays,String,Variables,If Statement,我试图制作一个程序,根据小时数变量,使字符串s1等于某些文本。问题是当我运行程序时,没有找到s1。我刚开始使用Java,所以我不确定这是否真的是低效的,或者是我缺少的一些简单的东西 代码: 公共类主{ 公共静态void main(字符串[]args){ //字符串更改测试 int[]arr; arr=新整数[2]; arr[0]=1; 布尔b1=arr[0]>1; 布尔b2=arr[0]arr[0]; 布尔b3=b4&&b2; 布尔b5=b1 | | b3; 如果(b5){ String s1=

我试图制作一个程序,根据小时数变量,使字符串s1等于某些文本。问题是当我运行程序时,没有找到s1。我刚开始使用Java,所以我不确定这是否真的是低效的,或者是我缺少的一些简单的东西

代码:

公共类主{
公共静态void main(字符串[]args){
//字符串更改测试
int[]arr;
arr=新整数[2];
arr[0]=1;
布尔b1=arr[0]>1;
布尔b2=arr[0]<1;
布尔b4=0>arr[0];
布尔b3=b4&&b2;
布尔b5=b1 | | b3;
如果(b5){
String s1=“您已经玩了“+arr[0]+”小时!”;
}
else if(arr[0]==1){
String s1=“您已经玩了1小时!”;
}
否则如果(arr[0]==5){
String s1=“您根本没有玩过!”;
}
否则{
String s1=“arr[0]中的内存错误,小时数是否为负数?是否存在?”;
}
系统输出(s1);
}
}

变量的作用域是声明变量的块。块从开始的大括号开始,在匹配的结束大括号处停止。因此,您要声明三个不同的变量,它们在它们的块之外是不可见的(顺便说一句,这就是为什么Java允许您使用相同的名称声明三次)

在块外声明一次变量:

String s1;
if (b5) {
    s1 = "You have played for " + arr[0] + " hours!";
}
...

变量的作用域是在其中声明变量的块。块从开始的大括号开始,在匹配的结束大括号处停止。因此,您要声明三个不同的变量,它们在它们的块之外是不可见的(顺便说一句,这就是为什么Java允许您使用相同的名称声明三次)

在块外声明一次变量:

String s1;
if (b5) {
    s1 = "You have played for " + arr[0] + " hours!";
}
...

您需要在main方法的开头定义字符串s1,如下所示:

     String s1;
稍后,当您设置s1(在if、else语句中)时,您可以编写:

     s1 = "You have played for......";

这样,s1将在代码的开头声明。

您需要在main方法的开头定义字符串s1,如下所示:

     String s1;
稍后,当您设置s1(在if、else语句中)时,您可以编写:

     s1 = "You have played for......";

这样,s1将在代码的开头声明。

代码块内发生的事情将保留在该代码块中。如果在
If块
中声明变量,则它在
If块
外部不可见-即使在
else If
else
情况下也不可见。您的代码不应该编译,因为之前没有声明最后一个
s1

    String s1;
    if (b5) {
       s1 = "You have played for " + arr[0] + " hours!";

    }
    else if (arr[0] == 1) {
       s1 = "You have played for 1 hour!";

    }
    else if (arr[0] == 5) {
       s1 = "You have not played at all!";
    }
    else {
       s1 = "Memory Error in arr[0], Are the hours negative? Is it there?";
    }
    System.out.print(s1);

这应该可以正常工作。

代码块内发生的事情将保留在该代码块中。如果在
If块
中声明变量,则它在
If块
外部不可见-即使在
else If
else
情况下也不可见。您的代码不应该编译,因为之前没有声明最后一个
s1

    String s1;
    if (b5) {
       s1 = "You have played for " + arr[0] + " hours!";

    }
    else if (arr[0] == 1) {
       s1 = "You have played for 1 hour!";

    }
    else if (arr[0] == 5) {
       s1 = "You have not played at all!";
    }
    else {
       s1 = "Memory Error in arr[0], Are the hours negative? Is it there?";
    }
    System.out.print(s1);
这应该可以正常工作。

试试这个

int[] arr;
arr = new int[2];
arr[0] = 1;
boolean b1 = arr[0] > 1;
boolean b2 = arr[0] < 1;
boolean b4 = 0 > arr[0];
boolean b3 = b4 && b2;
boolean b5 = b1 || b3;
 String s1 = "";
if (b5) {
     s1 = "You have played for " + arr[0] + " hours!";

}
else if (arr[0] == 1) {
     s1 = "You have played for 1 hour!";

}
else if (arr[0] == 5) {
     s1 = "You have not played at all!";
}
else {
     s1 = "Memory Error in arr[0], Are the hours negative? Is it there?";
}
System.out.print (s1);
}
int[]arr;
arr=新整数[2];
arr[0]=1;
布尔b1=arr[0]>1;
布尔b2=arr[0]<1;
布尔b4=0>arr[0];
布尔b3=b4&&b2;
布尔b5=b1 | | b3;
字符串s1=“”;
如果(b5){
s1=“您已经玩了“+arr[0]+”个小时!”;
}
else if(arr[0]==1){
s1=“你已经玩了1个小时了!”;
}
否则如果(arr[0]==5){
s1=“你根本没玩过!”;
}
否则{
s1=“arr[0]内存错误,小时数是否为负数?是否存在?”;
}
系统输出(s1);
}
试试这个

int[] arr;
arr = new int[2];
arr[0] = 1;
boolean b1 = arr[0] > 1;
boolean b2 = arr[0] < 1;
boolean b4 = 0 > arr[0];
boolean b3 = b4 && b2;
boolean b5 = b1 || b3;
 String s1 = "";
if (b5) {
     s1 = "You have played for " + arr[0] + " hours!";

}
else if (arr[0] == 1) {
     s1 = "You have played for 1 hour!";

}
else if (arr[0] == 5) {
     s1 = "You have not played at all!";
}
else {
     s1 = "Memory Error in arr[0], Are the hours negative? Is it there?";
}
System.out.print (s1);
}
int[]arr;
arr=新整数[2];
arr[0]=1;
布尔b1=arr[0]>1;
布尔b2=arr[0]<1;
布尔b4=0>arr[0];
布尔b3=b4&&b2;
布尔b5=b1 | | b3;
字符串s1=“”;
如果(b5){
s1=“您已经玩了“+arr[0]+”个小时!”;
}
else if(arr[0]==1){
s1=“你已经玩了1个小时了!”;
}
否则如果(arr[0]==5){
s1=“你根本没玩过!”;
}
否则{
s1=“arr[0]内存错误,小时数是否为负数?是否存在?”;
}
系统输出(s1);
}

您需要在条件范围之外声明s1。请在第一个if语句之外声明变量,并在所有地方使用相同的变量。请阅读并理解变量的作用域。您需要在条件的作用域之外声明s1。请首先在if语句之外声明变量,并在所有地方使用相同的变量。请阅读并理解变量的作用域。说字符串s1需要在主方法的开头声明,虽然它可以工作,但可能会给人错误的印象。是的,没错。我也应该提到一些关于范围的问题。谢谢。说字符串s1需要在主方法的开头声明,虽然它可以工作,但可能会给人错误的印象。是的,没错。我也应该提到一些关于范围的问题。非常感谢。