因此,我的任务是创建一个代码,该代码创建一个预定的数组列表,供用户输入多达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);
}
}
}
答案 0 :(得分:2)
找到最小值的display: inline-block;
循环应该在读取输入的while循环之后,而不是在其中(因为当前它遍历数组的未初始化元素,所以它总是找到0作为最小值)。如果这样做,您还应该将for循环更改为仅迭代分配给数组的元素(索引0到count-1),而不是整个数组。
或者,您可以删除for循环并只放
for
while循环内的条件。 这将在读取输入的同一循环中找到最小值。 当然,如果你这样做,你根本不需要将元素存储在一个数组中,这样你就可以进一步简化代码。
这是保持数组和for循环的可能解决方案:
if (numbers[count-1] < min) {
min = numbers[count-1];
}