2011-12-09 68 views
0

我試圖打印數組上的最大值和最小值以及它們各自的下標。我遇到了一個問題,即我的代碼(儘管打印數組的最高和最低值)爲最大和最小數組返回最大的下標(不管數值)。問題在於下面for循環中的某處。代碼打印出陣列的最大下標時,它應該打印最大值和最小值

int max = arrayOfNumbers[0]; 
     int min = arrayOfNumbers[0]; 
     int indexMax = 0; 
     int indexMin = 0; 
for (int i = 0; i < arrayOfNumbers.length; i++) { 
    if (max < arrayOfNumbers[i]) 
     max = arrayOfNumbers[i]; 
     indexMax = i; 
} 
for (int i = 0; i < arrayOfNumbers.length; i++) { 
    if (min > arrayOfNumbers[i]) 
     min = arrayOfNumbers[i]; 
     indexMin = i; 

回答

0

這應該工作:

int max = arrayOfNumbers[0]; 
int min = arrayOfNumbers[0]; 
int indexMax = 0; 
int indexMin = 0; 
for (int i = 0; i < arrayOfNumbers.length; i++) { 
    if (max < arrayOfNumbers[i]) { 
     max = arrayOfNumbers[i]; 
     indexMax = i; 
    } 
} 
for (int i = 0; i < arrayOfNumbers.length; i++) { 
    if (min > arrayOfNumbers[i]) { 
     min = arrayOfNumbers[i]; 
     indexMin = i; 
    } 
} 

你忘了把if年代後兩管的支架。每次執行循環內的代碼時,當前索引已被寫入indexMaxindexMin,這就是爲什麼在循環結束後,它們包含「最大的下標」。

+0

d'oh!謝謝哥們! – user1082706

+0

-1,而是告訴他如何找出問題的根源,而不是提供盲目複製和粘貼解決方案...... –

+0

恩恩德瑞傑,我對它的一般語法是正確的。這並不像我要求整個循環。我只是忘了一套大括號..這是我的錯,甚至在問題的答案是正確的時候問我,而不是他指出明顯的 – user1082706