2017-09-25 191 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