我是Java的初学者。我有一个整数数组:我想计算这个数组中的整数大于它们后面的整数。所以首先我要查看索引0处的整数,并检查它是否大于索引1处的整数。然后我查看索引1处的整数,并检查它是否大于索引2处的整数。等等
到目前为止,这就是我所拥有的:
int[] t = {1,5,6,4,3,10}; // create an array of integers
int sum = 0; //initialize sum at 0
for (int i=0; i<t.length-1; i++) {
for(int j = i+1; j<t.length; j++){
if (t[i]>t[j]){ //if i is bigger than j
sum += 1; //add 1 to sum
System.out.println(t[i]);
}
}
}
System.out.println(sum);
对于这个数组,sum应该是2:6大于4,4并且大于3.问题是,代码返回5.我已经尝试在if循环中打印t [i]来理解发生了什么on:它打印5,5,6,6,4。在这种情况下,我不明白为什么5会大于6。它看起来也像循环不止一次,所以我显然在做迭代时出错了。但我真的看不出问题出在哪里。所以,我的问题是:这里做错了什么?
答案 0 :(得分:3)
在单个for循环
中更容易做到这一点for (int i=0; i<t.length-1; i++){
if (t[i]>t[i+1]){
sum +=1;
System.out.println(t[i]);
}
}
目前,您所做的是每个值i
,您将其与之后的所有值进行比较,而不仅仅是下一个值。
答案 1 :(得分:1)
您希望它只检查下一个元素,但是您要检查结尾的下一个元素
这是您当前代码所发生的事情
1,5,6,4,3,10
5 > 4
5 > 3
6 > 4
6 > 3
4 > 3
所以count = 5
删除内部循环并将条件更改为
if (t[i] < t[i+1]){
sum += 1;
}
答案 2 :(得分:0)
for(int j = i+1; j<t.length; j++){
您不希望第二个for
循环。你只想要j = i + 1
,而不是别的。你想要的更像是
for (int i=0; i<t.length-1; i++) {
if (t[i]>t[i + 1]){ //if i is bigger than j
sum += 1; //add 1 to sum
System.out.println(t[i]);
}
}
答案 3 :(得分:0)
不需要第二个循环。只需将i增加1并比较第i和第(i + 1)个元素。这应该是: -
for (int i=0; i<t.length-1; i++) {
if (t[i]>t[i+1]){ //if i is bigger than i+1
sum += 1; //add 1 to sum
}
}