Java 在while循环中声明变量的数据类型而不是在for循环中声明变量的数据类型有什么错误?
若我声明变量,然后在while循环中初始化变量,那个么并没有问题Java 在while循环中声明变量的数据类型而不是在for循环中声明变量的数据类型有什么错误?,java,Java,若我声明变量,然后在while循环中初始化变量,那个么并没有问题 int a; while((a=someValue)!= -1)` 但若我在while循环中声明变量并初始化它,那个么编译时就会出现问题 while ((int a=someValue) != -1) 这是什么原因?不过,在For循环中声明和初始化变量似乎很好 完整代码段: 正确的 错的 因为您只能在while循环的括号内编写表达式。从语义上讲,这是有意义的:假设您在while()中声明了一个变量,那么在每次迭代中它都将创建
int a;
while((a=someValue)!= -1)`
但若我在while循环中声明变量并初始化它,那个么编译时就会出现问题
while ((int a=someValue) != -1)
这是什么原因?不过,在For循环中声明和初始化变量似乎很好
完整代码段:
正确的
错的
因为您只能在
while
循环的括号内编写表达式。从语义上讲,这是有意义的:假设您在while()
中声明了一个变量,那么在每次迭代中它都将创建一个新的局部变量,并且您不能多次声明局部变量。秒将给出一个语法错误。与For循环不同,当循环时,不能在中声明变量。区别在于第二个变量不可编译。原因是第二个语法无效代码>a=5代码>至inta=5代码>?而
接受一个表达式,其计算结果为true
a=5
是一个计算结果为5
的表达式,因此a=5!=-1
计算为布尔值
inta=5
是一条语句。也许本教程会有所启发。每种语言都有不同的语法规则。对于Java,您可以看到它不起作用。在C或其他语言中,差异将与该变量的范围有关。
int a;
while ((a=Integer.parseInt(reader.nextLine())) != -1) {
sum.addNumber(a);
}
System.out.println("sum: "+sum.sum());
while ((int a=Integer.parseInt(reader.nextLine())) != -1) {
sum.addNumber(a);
}
System.out.println("sum: "+sum.sum());