我试图接受用户输入,将值存储在数组中,然后找到最小最大值。如果数组是用值初始化的,我的代码可以正常工作,但是当我接受用户输入时,它总是返回 0 作为最小值。看代码:
import java.util.Arrays;
import java.util.Scanner;
public class Loops {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("How many numbers in a set: ");
int number = scan.nextInt();
int[] myArray = new int[number];
int min = myArray[0];
int max = myArray[0];
System.out.println("Input your numbers: ");
for(int i = 0; i <= myArray.length-1; i++) {
myArray[i] = scan.nextInt();
if (myArray[i] < min) {
min = myArray[i];
} else if (myArray[i] > max) {
max = myArray[i];
}
}
System.out.println(Arrays.toString(myArray));
System.out.println(max + " " + min);
System.out.println();
}
}
作为初学者,我很感激您查看上面的代码和提示
当你这样做时
int[] myArray = new int[number];
int min = myArray[0];
int max = myArray[0];
将 min 和 max 设置为 0,然后在 for 循环中检查它是否小于 0。 如果您只为程序提供正数,则最小值将保持为 0 如果你想找到数组的最小值和最大值,你可以像这样初始化最小值和最大值:
int min = Integer.MAX_VALUE
int max = Integer.MIN_VALUE
public static void main(String... args) {
Scanner scan = new Scanner(System.in);
System.out.print("How many numbers in a set: ");
int[] arr = new int[scan.nextInt()];
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
System.out.print("Input your numbers: ");
for (int i = 0; i < arr.length; i++) {
arr[i] = scan.nextInt();
min = Math.min(min, arr[i]);
max = Math.max(max, arr[i]);
}
System.out.println(Arrays.toString(arr));
System.out.println(max + " " + min);
System.out.println();
}
您的代码默认将 min 初始化为 0,它比我们在数组中给出的大多数数字都小
int min = Integer.MAX_VALUE; //maximum value Integer datatype can hold
int max = Integer.MIN_VALUE;// minimum value Integer datatype can hold
这里我们将 min 设为可能的最高数字,将 max 设为可能的最低数字,这使得代码模式也能防弹到 -ve 值! 要了解有关 Integer.MAX_VALUE 和 Integer.MIN_VALUE 的更多信息,请点击以下链接:https://www.geeksforgeeks.org/integer-max_value-and-integer-min_value-in-java-with-examples/
首先
int[] myArray = new int[number];
初始化数组大小。因此,如果您输入示例 4(在本例中为 [number]
),您将创建一个数组 myArray[] = {0, 0, 0, 0};
。
package javase.Arrays;
import java.util.Arrays;
import java.util.Scanner;
public class Loops1 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("How many numbers in a set: ");
int number = scan.nextInt();
int[] myArray = new int[number];
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
System.out.println("Input your numbers: ");
for (int i = 0; i < myArray.length; i++) {
myArray[i] = scan.nextInt();
min = Math.min(min, myArray[i]);
max = Math.max(max, myArray[i]);
}
System.out.println(Arrays.toString(myArray));
System.out.println("Max : "+max + " " +"Min : " +min);
System.out.println();
}
}