2015-11-15 86 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 )