int [] ary1 = new int [100];
int [] ary2 = new int [100];
System.out.println("Enter no more than 100 integers in ascending order. To end, enter a negative number.");
int num1 = user.nextInt();
int count1 = 0;
while ((num1 > -1) && (count1 < ary1.length)){
ary1[count1] = num1;
count1++;
num1 = user.nextInt();
这是第一个阵列。
用户可以输入不超过100个整数,如果用户输入负数,则会停止。
if (num1 < 0){
System.out.println("Enter your second list of integers from least to greatest. To end, enter a negative number.");
int num2 = user.nextInt();
int count2 = 0;
while ((num2 > -1) && (count2 < ary2.length)){
ary2[count2] = num2;
count2++;
num2 = user.nextInt();
这是第二个阵列。
用户可以输入不超过100个整数,如果用户输入负数,则会结束。
if (num2 < 0){
for (int one = 0; one < count1; one++){
System.out.print(ary1[one]+" ");}
打印出第一个整数列表
System.out.println(""); **//skip a line**
for (int two =0; two < count2; two++){
System.out.print(ary2[two]+" ");} p
删除第二个整数列表
System.out.println(""); **//skip a line**
问题出在这里,它不会检查数组是否按升序排列。 ↓↓↓
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;
}}
}}
} }}}
如果inOder = 1,我将需要合并2个数组。
答案 0 :(得分:1)
您的问题在于如何增加check1和check2变量:
if (ary1[check1] > ary1[check1++]){ }
if (ary2[check2] > ary2[check2++]){ }
对于这些循环,您使用的是check1++
和check2++
。将++
放在变量名称的末尾将计算增量之前的表达式值。在变量名之前放置++
首先递增变量,然后计算表达式。解决方法是重新定位++
,如下所示:
if (ary1[check1] > ary1[++check1]){ }
if (ary2[check2] > ary2[++check2]){ }
查看这篇文章以更好地理解前缀/后缀运算符:
Java: Prefix/postfix of increment/decrement operators?
更新:其他用户注意到,由于循环控制也执行了两次,增量实际上发生了两次。要解决此问题,请将++check1
替换为check + 1
。我觉得这个被认为是正确的,我几乎感到内疚!
答案 1 :(得分:0)
++是问题所在:
if (ary1[check1] > ary1[check1++])
将其更改为:
if (ary1[check1] > ary1[check1 + 1])