2015-11-15 47 views
1

所以这一直困扰着我一个半小时,它变得非常烦人。我不确定是什么问题,因为我已经多次重新检查过我的代码,我已经搜索了其他方法,或者如果我做错了某些事情,但仍然没有看到任何内容。阵列中的第二小号码 - 输出不正确

这是从我的代码的摘录:

// 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 + "."); 

阵列[i]是来自用户的输入。开始时,程序会要求您输入您想输入的号码,然后继续输入。 我输入了五位数字,然后输入五位数字,但我的第二小数字与我的最小数字相同。有时我会得到一个正确的答案。 有什么建议吗?编辑: 在user3591111的帮助下工作。谢谢!

+0

我不没有看到比较'最小'数字和'secondnum(second min)'的if语句 – 3kings

回答

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 )