2017-09-25 190 views
-3

我需要創建一個程序,讓用戶輸入存儲在數組中的10個數字。我已經有了確定用戶輸入的最小和最大數字的代碼,所有我遇到的問題是如何顯示最大和最小值所在的索引。Java數組:找到數組中存儲值的索引。是

這裏是我的代碼:

import java.util.Scanner; 

public class Array { 

    static Scanner in = new Scanner(System.in); 

    public static void main(String[] args) { 

     int numbers[] = new int[10]; 
     int smallest = Integer.MAX_VALUE, largest = numbers[0]; 

     for(int i = 0; i < 10; i++){ 
//I get the "Can't find symbol error" on this part: index = i; 

      index = i; 
      System.out.print("Array Number " + i + ": "); 
      numbers[i] = in.nextInt(); 
     } 
     for (int n = 0 ; n < numbers.length; n++) { 
      if (numbers[n] < smallest) { 
       smallest = numbers[n]; 
      } 
      if (numbers[n] > largest) { 
       largest = numbers[n]; 
      }  

     } 

//And this part, which it the: index 

     System.out.println("Maximum number is " + largest + " located in index " + index); 
     System.out.println("Minimum number is " + smallest + " located in index " + index); 

    } 

} 

我想知道我有哪個部分是錯誤的。

+0

'index'沒有定義。 – hsz

+0

remove index = i;在這裏注意'i'基本上用作你的'索引' – nafas

+0

你使用的是相同的變量索引,或者你希望用它來告訴你最高和最低的索引?你需要兩個不同的變量。 –

回答

0

index沒有被定義,因此你會在那裏得到一個錯誤。

int index = i; 

對於發現的最小和最大數量的指標,則需要你,只要你找到一個更小或更大的值更新兩個指標。你甚至都不需要保存smallestlargest,因爲它們存儲在陣列中不管怎麼說,並且可以使用兩個指標進行檢索(感謝Andrew S.用於提):

int maxIndex = -1, minIndex = -1; 

for (int n = 0 ; n < numbers.length; n++) { 
    if (numbers[n] < smallest) { 
     smallest = numbers[n]; 
     minIndex = n; 
    } 
    if (numbers[n] > largest) { 
     largest = numbers[n]; 
     maxIndex = n; 
    }  
} 

System.out.println("Maximum number is " + numbers[maxIndex]+ " located in index " + maxIndex); 
System.out.println("Minimum number is " + numbers[minIndex] + " located in index " + minIndex); 
+0

請注意,將索引作爲「minIndex」和「maxIndex」跟蹤足以確定實際值。最小的_value_是數字[minIndex],最大的_value_是數字[maxIndex],因此不需要「最小」和「最大」。 –

+0

@AndrewS絕對正確,我更新了答案! :) –

+0

謝謝! :)我更新了我的代碼,它工作! – Lovias