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

在用户输入的数组(Java)中查找最小值和最大值,java,arrays,arraylist,max,minimum,Java,Arrays,Arraylist,Max,Minimum,因此,我的任务是创建一个代码,创建一个预先确定的数组列表,供用户输入多达100多个整数,并且可以选择使用0来表示输入完成。但是,当尝试调用最小值时,它只返回一个值0。我如何正确格式化它,使它与用户输入的数组列表中的所有值进行比较?谢谢你给我的任何帮助!我在旁边添加了评论,以表明我对哪些方面有疑问,或者我认为错误在哪里 public static void main(String[] args) { Scanner TextIO = new Scanner(System.in); St

因此,我的任务是创建一个代码,创建一个预先确定的数组列表,供用户输入多达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);   
  }
 }                   
}                
publicstaticvoidmain(字符串[]args){
Scanner TextIO=新扫描仪(System.in);
字符串计算;
double[]numbers2;//用于存储双值的数组。
int[]numbers;//用于存储int值的数组。
int count;//保存在数组中的数字数。
int num;//用户输入的数字之一。
int max;
int-min;
/*初始化求和和和计数变量*/
numbers2=新的双精度[100];//用于100双精度的空间。
数字=新整数[100];//100整数的空间。
count=0;//未保存任何数字
max=Integer.MIN_VALUE;//是否正确初始化?
min=Integer.MAX_VALUE;//是否正确初始化?
/*最小值法的开始*/
如果(计算等于(“最小”)){

System.out.println(“最多输入100个正整数; while(true){//获取数字并将其放入数组中。 系统输出打印(“->”); num=TextIO.nextInt();
if(numYour
for
找到最小值的循环应该在读取输入的while循环之后,而不是在其内部(因为当前它遍历数组中未初始化的元素,所以它总是找到一个0作为最小值)。如果这样做,还应该将for循环更改为只遍历分配给数组的元素(索引0到count-1),而不是整个数组

或者,您可以删除for循环,只需将

        if (numbers[count-1] < min) {
            min = numbers[count-1];
        }
if(数字[count-1]
while循环中的条件。 这将在读取输入的同一循环中找到最小值。 当然,如果这样做,就根本不需要将元素存储在数组中,因此可以进一步简化代码

下面是一个可能的解决方案,用于保持阵列和for循环:

while (count < numbers.length) { // avoid too many inputs
    System.out.print("-> ");
    num = TextIO.nextInt();

    if (num <= 0) {
        break; 
    } else { 
        numbers[count] = num;
        count++;  
    }
}
for (int i=0; i<count;i++) {
    if (numbers[i] < min) {
        min = numbers[i];
    }         
}
while(count”);
num=TextIO.nextInt();

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

或者,您可以删除for循环,只需将

        if (numbers[count-1] < min) {
            min = numbers[count-1];
        }
if(数字[count-1]
while循环中的条件。 这将在读取输入的同一循环中找到最小值。 当然,如果这样做,就根本不需要将元素存储在数组中,因此可以进一步简化代码

下面是一个可能的解决方案,用于保持阵列和for循环:

while (count < numbers.length) { // avoid too many inputs
    System.out.print("-> ");
    num = TextIO.nextInt();

    if (num <= 0) {
        break; 
    } else { 
        numbers[count] = num;
        count++;  
    }
}
for (int i=0; i<count;i++) {
    if (numbers[i] < min) {
        min = numbers[i];
    }         
}
while(count”);
num=TextIO.nextInt();

如果(num)最多超过100-这意味着什么?只是一个想法,您也可以将min和max指定为数组中的第一项,但我认为min和max也可以工作。
int[100]
有101个整数的空间。您的格式太糟糕了。请将
for
循环替换为
min=Math.min(min,num)
。最多超过100个-这意味着什么?您也可以将最小值和最大值指定为数组中的第一项,但我认为最小值和最大值也可以使用。
int[100]
有101个整数的空间。您的格式太糟糕了。请将
for
循环替换为
min=Math.min(min,num)
。好的,我更改了代码,但它仍然返回值0。您认为这可能与没有正确初始化max和min的变量有关吗?我的变量是:{max=Integer.min\u value;min=Integer.max\u value;}最多输入100个正整数;输入0结束。-->4->5->6->7->8->9->10->0您的最小值是:0确定我更改了代码,但它仍然返回值0。您认为这可能与没有正确初始化max和min的变量有关吗?我的变量是:{max=Integer.MIN\u VALUE;MIN=Integer.max\u VALUE;}最多输入100个正整数;最后输入0。->4->5->6->7->8->9->10->0您的最小值是:0