Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Arrays 它赢了';t检查数组是否按升序排列_Arrays_Sorting - Fatal编程技术网

Arrays 它赢了';t检查数组是否按升序排列

Arrays 它赢了';t检查数组是否按升序排列,arrays,sorting,Arrays,Sorting,问题就在这里,它不会检查数组是否按升序排列。↓↓↓ System.out.println(""); **//skip a line** int顺序=0; for(int check1=0;check1ary1[check1++]){ System.out.println(“错误:数组顺序不正确。”); 打破 }否则{ 顺序=1; }} for(int check2=0;check2ary2[check2++]){ System.out.println(“错误:数组顺序不正确

问题就在这里,它不会检查数组是否按升序排列。↓↓↓

      System.out.println("");     **//skip a line**
int顺序=0;
for(int check1=0;check1ary1[check1++]){
System.out.println(“错误:数组顺序不正确。”);
打破
}否则{
顺序=1;
}}
for(int check2=0;check2ary2[check2++]){
System.out.println(“错误:数组顺序不正确。”);
打破
}否则{
顺序=1;
}} 
}}
}  }}}

如果inOder=1,我需要合并这两个数组。

您的问题在于如何递增check1和check2变量:

       int inOrder = 0;    
      for (int check1 = 0; check1 < count1-1; check1++){
        if (ary1[check1] > ary1[check1++]){
          System.out.println("Error: Array not in correct order.");
          break;
        }else{
           inOrder = 1;
        }}

        for (int check2 = 0; check2 < count2-1; check2++){
        if (ary2[check2] > ary2[check2++]){
          System.out.println("Error: Array not in correct order.");
          break;
        }else{
          inOrder = 1;
        }} 



        }}
    }  }}}
对于这些循环,您使用的是
check1++
check2++
。将
++
放在变量名的末尾,计算结果为增量之前的表达式值。将
++
放在变量名之前,首先递增变量,然后计算表达式。修复方法是重新定位您的
++
,如下所示:

if (ary1[check1] > ary1[check1++]){ }
if (ary2[check2] > ary2[check2++]){ }
请阅读本文,以便更好地理解前缀/后缀运算符:

更新:其他用户注意到,由于循环控制也在执行++,因此增量实际上发生了两次。若要修复,请将
++check1
替换为
check+1
。我几乎感到内疚,认为这是正确的

问题出在++上:

if (ary1[check1] > ary1[++check1]){ }
if (ary2[check2] > ary2[++check2]){ }
将此更改为:

if (ary1[check1] > ary1[check1++])

这只会在每次检查一对时进行检查,因为check1或check2将在每个循环中递增2。示例0,2,1,3=第一个循环比较有效的0和2,然后比较同样正确的1和3。它跳过了检查2和1,因此不会给出正确的结果良好的catch@Geezer68——没有仔细查看外部循环代码我也会帮助他们进行顺序检查——最初应设置为true,在break语句之前仅设置为false:)
       int inOrder = 0;    
      for (int check1 = 0; check1 < count1-1; check1++){
        if (ary1[check1] > ary1[check1++]){
          System.out.println("Error: Array not in correct order.");
          break;
        }else{
           inOrder = 1;
        }}

        for (int check2 = 0; check2 < count2-1; check2++){
        if (ary2[check2] > ary2[check2++]){
          System.out.println("Error: Array not in correct order.");
          break;
        }else{
          inOrder = 1;
        }} 



        }}
    }  }}}
if (ary1[check1] > ary1[check1++]){ }
if (ary2[check2] > ary2[check2++]){ }
if (ary1[check1] > ary1[++check1]){ }
if (ary2[check2] > ary2[++check2]){ }
if (ary1[check1] > ary1[check1++])
if (ary1[check1] > ary1[check1 + 1])