2013-12-15 3 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

Добавление фигурных скобок к, если блок

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, содержится более одной строки, вам нужно заключить их в фигурные скобки. Если это только одна строка, нет необходимости в фигурных скобках.

Смежные вопросы