在用户输入的数组(Java)中查找最小值和最大值
因此,我的任务是创建一个代码,创建一个预先确定的数组列表,供用户输入多达100多个整数,并且可以选择使用0来表示输入完成。但是,当尝试调用最小值时,它只返回一个值0。我如何正确格式化它,使它与用户输入的数组列表中的所有值进行比较?谢谢你给我的任何帮助!我在旁边添加了评论,以表明我对哪些方面有疑问,或者我认为错误在哪里在用户输入的数组(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
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(numYourfor
找到最小值的循环应该在读取输入的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(numYourfor
找到最小值的循环应该在读取输入的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