Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在while循环中声明变量的数据类型而不是在for循环中声明变量的数据类型有什么错误?_Java - Fatal编程技术网

Java 在while循环中声明变量的数据类型而不是在for循环中声明变量的数据类型有什么错误?

Java 在while循环中声明变量的数据类型而不是在for循环中声明变量的数据类型有什么错误?,java,Java,若我声明变量,然后在while循环中初始化变量,那个么并没有问题 int a; while((a=someValue)!= -1)` 但若我在while循环中声明变量并初始化它,那个么编译时就会出现问题 while ((int a=someValue) != -1) 这是什么原因?不过,在For循环中声明和初始化变量似乎很好 完整代码段: 正确的 错的 因为您只能在while循环的括号内编写表达式。从语义上讲,这是有意义的:假设您在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());