Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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:增量操作在if块内不起作用_Java - Fatal编程技术网

Java:增量操作在if块内不起作用

Java:增量操作在if块内不起作用,java,Java,我正在使用Java为冒泡排序编写一个小代码,如下所示 包raja.programming.bubblesort; 公共班机{ 公共静态无效字符串[]args{ //在这里编写代码 //int[]intArray={5,-10,22,43,1,17}; int[]intArray={20,35,-15,7,55,1,-22}; 对于int unsortedArrayIndex=intArray.length-1;unsortedArrayIndex>0;unsortedArrayIndex-{ 对

我正在使用Java为冒泡排序编写一个小代码,如下所示

包raja.programming.bubblesort; 公共班机{ 公共静态无效字符串[]args{ //在这里编写代码 //int[]intArray={5,-10,22,43,1,17}; int[]intArray={20,35,-15,7,55,1,-22}; 对于int unsortedArrayIndex=intArray.length-1;unsortedArrayIndex>0;unsortedArrayIndex-{ 对于int index=0;indexintArray[index+1]{ swapintArray指数,指数+1; } } } 对于int num:intArray{ System.out.printlnnum; } } 公共静态无效交换int[]数组,int i,int j{ 如果i==j{ 回来 } System.out.printlnswap index+array[i]+index+1:+array[j]; int temp=数组[i]; 数组[i]=数组[j]; 数组[j]=温度; } } 在这行中,如果intArray[index]>intArray[index+1]{我作为index+1传递,那么只有我的代码可以工作,如果我传递I++或++I,它就不能工作

这种行为背后的原因是什么,请帮助我理解


谢谢。

我想原因是。例如,如果你使用索引i,并在循环中递增它,你将跳转下一次迭代。i++等于i=i+1,但i+1不等于i=i+1

当你在使用索引+1引用数组中的位置时,你正在使用索引进行迭代,而index`变量的值不是他被激怒了

但是如果您使用index++或++index,那么在该迭代中将index变量的值增加1,并且将跳过一个索引。由于同样的原因,在这种情况下,您得到的输出数组是未排序的。

当您使用index+1时,您的代码会比较位置索引处的元素和位置索引处的元素离子指数+1,循环在循环内指令的末尾加1

但是如果您使用++i或i++的话,您的代码也会做同样的事情,但是您使用的索引会跳2,即for循环的增量和您所做的增量

如果您使用i++它将不起作用,因为这将递增i,并在递增之前返回i的上一个值,因此就像您将元素与自身进行比较一样

但是如果你使用++i,它会增加i的值并返回增加的值。但是在两种方式中,在一个循环中,你都会增加i两次。如果你真的想使用这两种方式中的任何一种,你需要删除for循环,使用while循环并使用++i

快速猜测:索引+1会被计算并且没有副作用;+++或i++会更改i、 如果这没有帮助,请澄清你不工作的意思。