繁体   English   中英

如何在Java中比较一个数组中的两个整数?

[英]How can I compare two integers in one array in Java?

我是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]以了解发生了什么:它打印5,5,6,6,4。 我不明白为什么在这种情况下5会大于6。 看起来好像循环了不止一次,所以我显然在迭代中做错了什么。 但是我真的看不出问题出在哪里。 所以,我的问题是:这里做错了什么?

在单个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,5,6,4,3,10

5 > 4
5 > 3
6 > 4
6 > 3
4 > 3

所以计数= 5

删除内部循环并将条件更改为

if (t[i] < t[i+1]){
    sum += 1;
}
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]);
        }
}

不需要第二个循环。 只需将i增加1并比较ith和第(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
        }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM