数组中的第二个最小数字 - 输出错误

时间:2015-11-15 01:18:22

标签: java arrays integer

所以这一直困扰着我一个半小时而且它真的很烦人。我不确定这个问题是什么,因为我已经多次重新检查了我的代码,我用Google搜索并搜索了其他方法,或者如果我做错了什么,我仍然不会这样做。什么都看不见。

这是我的代码的摘录:

    // MAX AND MIN NUMBER
    int maxnum = array[0];
    int minnum = array[0];
    for (int i = 0; i < array.length; i++) {
        if (array[i] > maxnum) {
            maxnum = array[i];
        } else if (array[i] < minnum) {
            minnum = array[i];
        }
    }
    System.out.println("Maximum number is " + maxnum + ", minimum is " + minnum + ".");
    // --------------------------------------------------------------------------------
    // SECOND SMALLEST NUMBER
    int secondnum = array[0];
    for (int i = 0; i < array.length; i++) {
        if (array[i] == minnum) {
            secondnum = minnum;
        } else if (array[i] < minnum) {
            secondnum = minnum;
            minnum = array[i];
        } else if (array[i] < secondnum) {
            secondnum = array[i];
        }

    }
    System.out.println("Second smallest number is " + secondnum + ".");

array [i]是来自用户的输入。开始时,程序会要求您输入要输入的数量,然后继续输入它们。 我输入五个,我输入五个数字,但我的第二个最小数字与我最小的数字相同。有时我会得到正确的答案。 有什么想法吗?

编辑: 与user3591111的帮助一起使用。谢谢!

1 个答案:

答案 0 :(得分:0)

在第一个中你可以在第二个i = 1开始尝试。

int secondnum = maxnum;
for (int i = 0; i < array.length; i++) {
    if (array[i] != minnum && array[i] <secondnum  ) 
       secondnum = array[i];

}

如果你有重复的数字,这不会起作用,因为你的小号可能等于你的第二小号,因为你需要存储你的小号码的位置,如果你改为if ((array[i] != minnum || smallPos != i) && array[i] <secondnum )