Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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模运算符和预增量-SCJA_Java - Fatal编程技术网

Java模运算符和预增量-SCJA

Java模运算符和预增量-SCJA,java,Java,我正在为我的SCJA考试复习,我被这个问题和答案弄糊涂了。问题是运行和编译代码的结果是什么 public class Test{ public static void main(String args[]){ int counter = 0; for(int i=0; i< 4; ++i){ for(int k=0; k< 4; ++k){ system.out.prin

我正在为我的SCJA考试复习,我被这个问题和答案弄糊涂了。问题是运行和编译代码的结果是什么

    public class Test{ 
       public static void main(String args[]){
         int counter = 0;
         for(int i=0; i< 4; ++i){
            for(int k=0; k< 4; ++k){
               system.out.println("Hello - "+ ++counter);
               if((k % 4) == 0)
               break;
            }
         }
       }
    }
公共类测试{
公共静态void main(字符串参数[]){
int计数器=0;
对于(int i=0;i<4;++i){
对于(int k=0;k<4;++k){
system.out.println(“Hello-”+++计数器);
如果((k%4)==0)
打破
}
}
}
}
所以他们给出的答案是“Hello-1”,因为0%4=0 但我的问题是k不应该是1,因为它已经被预先递增了吗

提前谢谢

我的问题是
k
是否应该不是1,因为它已经被预先递增了

++k
发生在循环迭代结束时,即
if
语句之后

无论是
++k
还是
k++
,都没有区别;无论哪种情况,
k
的第一个值都为零

所以他们给出的答案是“Hello-1”

这显然是不正确的,因为在整个程序中,
计数器
从不递增且始终保持为零

我的问题是
k
是否应该不是1,因为它已经被预先递增了

++k
发生在循环迭代结束时,即
if
语句之后

无论是
++k
还是
k++
,都没有区别;无论哪种情况,
k
的第一个值都为零

所以他们给出的答案是“Hello-1”


这显然是不正确的,因为在整个程序中,
计数器
从不递增且始终保持为零。

for循环具有以下结构:

for (initialization; condition; update)
每次执行循环后,
更新将执行

因此,以下两个回路是相同的:

for (int i = 0; i < 10; i++) {
for(int i=0;i<10;i++){

for(int i=0;i<10;++i){

for循环具有以下结构:

for (initialization; condition; update)
每次执行循环后,
更新将执行

因此,以下两个回路是相同的:

for (int i = 0; i < 10; i++) {
for(int i=0;i<10;i++){

for(int i=0;i<10;++i){
k不能为1。 这是因为当for循环运行时,它只有在执行了循环中的所有代码后才会更新。因为循环在第一次迭代完成之前就中断了,所以k仍然为0。

k不能为1。
这是因为当for循环运行时,它只有在执行完循环中的所有代码后才会更新。因为循环在第一次迭代完成之前就中断了,所以k仍然为0。

在第一次迭代时,k取0值(在每次迭代结束时执行++k),在第一次迭代时,k取0值(++k在每次迭代结束时执行)啊,一切都有意义!非常感谢!啊,一切都有意义!非常感谢!