2013-12-15 35 views
-1

我試圖找到該數組的最小數目的索引。我的代碼是低於和由於某種原因索引不斷打印值9.查找數組中的值的索引Java

public static void main (String args []) 
{ 
    int [] numbers = new int [10]; 

    //10 data inputs from user 

    int smNum = numbers[0]; 
    int index = 0; 


    for(int i = 0; i < numbers.length; i++) 
    { 
     if (numbers[i] < smNum) 
      smNum = numbers[i]; 
      index = i; 
    } 

    System.out.println("\nThe smallest number in the array is: "+smNum+"\nThe index of this number is: "+ index); 

    } 
} 

在此先感謝。

+5

選項卡並不重要,花括號可以。使用他們'{}'。 –

+1

Java不是Python。添加大括號到你的'if(numbers [i]

回答

0

這不是我的意思。

一個if沒有花括號的塊只評估單個下面的表達式。換句話說

if (numbers[i] < smNum) 
    smNum = numbers[i]; 
    index = i; 

相當於

if (numbers[i] < smNum) { 
    smNum = numbers[i]; 
} 
index = i; 

其中很顯然,index = i;將始終進行評估。

如果要在if塊中執行多條語句,則必須將這些語句包裝在花括號中。

if (numbers[i] < smNum) { 
    smNum = numbers[i]; 
    index = i; 
} 
+1

不能相信我忘記了那該死的花括號...感謝你清除那些信息和幫助。 –

0

添加花括號中的if塊

int smNum = numbers[0]; 
int index = 0; 


for(int i = 0; i < numbers.length; i++) 
{ 
    if (numbers[i] < smNum){ 
     smNum = numbers[i]; 
     index = i; 
    } 
} 

System.out.println("\nThe smallest number in the array is: "+smNum+"\nThe index of this number is: "+ index); 

應該解決的問題。如果一個塊(如if子句有多行),則需要將它們放在花括號中。如果只有一行,則不需要大括號。