查找用户输入数组中的最小值和最大值(Java)

时间:2016-04-05 05:50:14

标签: java arrays arraylist max minimum

因此,我的任务是创建一个代码,该代码创建一个预定的数组列表,供用户输入多达100个整数,并选择使用0表示一旦完成输入。但是,当试图说出最小值时,它只返回值0.如何正确格式化它,以便将它与用户输入的数组列表中的所有值进行比较?感谢我能得到的任何帮助!我在旁边添加了评论,以显示我对哪些方面有疑问或我认为错误所在。

public static void main(String[] args) {

 Scanner TextIO = new Scanner(System.in);
    String calc;

            double[] numbers2; //An array for storing double values.
            int[] numbers;  // An array for storing the int values.
             int count;      // The number of numbers saved in the array.
             int num;        // One of the numbers input by the user.
             int max;
             int min;

 /* Initialize the summation and counting variables. */

             numbers2 = new double[100]; // Space for 100 doubles. 
             numbers = new int[100];     // Space for 100 ints.
             count = 0;                  // No numbers have been saved
             max = Integer.MIN_VALUE;   //Properly initialized?
             min = Integer.MAX_VALUE;   //Properly initialized?

/*Start of min method. */

 if (calc.equals("min")){
    System.out.println("Enter up to 100 positive integers; 

     while (true) {   // Get the numbers and put them in the array.
        System.out.print("-> ");
        num = TextIO.nextInt();

     if (num <= 0) {
         break; }               /*Zero marks the end of the input. All                
                                have been inputted. */

     else { 
         numbers[count] = num;  // Put num in position count.
         count++;  
                    }

     for (int i=0; i<numbers.length;i++) {  //"For" statement needed here?
            if (numbers[i] < min) {
                min = numbers[i];}         
                                         }

     }

        System.out.println("Your minimum is : " + min);   
  }
 }                   
}                

1 个答案:

答案 0 :(得分:2)

找到最小值的display: inline-block; 循环应该在读取输入的while循环之后,而不是在其中(因为当前它遍历数组的未初始化元素,所以它总是找到0作为最小值)。如果这样做,您还应该将for循环更改为仅迭代分配给数组的元素(索引0到count-1),而不是整个数组。

或者,您可以删除for循环并只放

for

while循环内的条件。 这将在读取输入的同一循环中找到最小值。 当然,如果你这样做,你根本不需要将元素存储在一个数组中,这样你就可以进一步简化代码。

这是保持数组和for循环的可能解决方案:

        if (numbers[count-1] < min) {
            min = numbers[count-1];
        }