嗨,所以我是Java编程的新手,我目前正在学习数组。所以我想做的是找到数组的最大值和最小值,但是由于某种原因我找不到最小值,但是我可以找到最大值。
这是我的输出:
Enter the number of elements: 5
Enter a number: 1
Enter a number: 2
Enter a number: 3
Enter a number: 4
Enter a number: 5
The maximum number is:5
The minimum number is: 0
我使用相同的语句通过仅更改运算符来获取最大值。但是输出总是为零。
这是我的代码:
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of elements: ");
int elements = input.nextInt();
int [] array = new int[elements];
int max = array[0];
int min = array[0];
for(int i = 0; i<elements; i++){
System.out.print("Enter a number: ");
array[i] = input.nextInt();
if(array[i]>max){
max = array[i];
}
if(array[i]<min){
min = array[i];
}
}
System.out.print("The maximum number is:" + max);
System.out.println();
System.out.print("The minimum number is: " + min);
}
}
任何帮助将不胜感激!
答案 0 :(得分:4)
int min = array[0];
该语句在array[0]
为零时执行。
此时您尚未读取任何值,因此请使用以下命令初始化最小值和最大值:
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
实际上,您根本不需要该数组,因为在循环之后不需要使用它。只需将扫描器结果分配给在循环内声明的int
变量即可。
答案 1 :(得分:1)
将最大值设置为最小值,将最小值设置为最大值
.env
答案 2 :(得分:0)
使用新运算符分配内存时,
int [] array = new int[elements];
数组的每个元素都初始化为零。
因此,当您执行int min=array[0]
时,min被分配值为0。然后与1,2,3,4和5进行比较,min最小,因此不会改变。
要解决此问题, 首先使用for循环输入数组中的所有元素,然后将min和max初始化为array [0]
答案 3 :(得分:-1)
尝试
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of elements: ");
int elements = input.nextInt();
int [] array = new int[elements];
for(int i = 0; i<elements; i++){
System.out.print("Enter a number: ");
array[i] = input.nextInt();
}
int max = array[0];
int min = array[0];
for(int i = 0; i<elements; i++){
if(array[i]>max){
max = array[i];
}
if(array[i]<min){
min = array[i];
}
}
System.out.print("The maximum number is:" + max);
System.out.println();
System.out.print("The minimum number is: " + min);
}
}
答案 4 :(得分:-1)
整数的默认初始值为0。 因此,在检查它是否大于输入值时,默认值保持不变
答案 5 :(得分:-1)
为什么首先需要一个数组?
Scanner console = new Scanner(System.in);
int entries = console.nextInt();
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for(int i = 0; i < entries; i++){
int temp = console.nextInt();
if(temp < min) {
min = temp;
}
if (temp > max) {
max = temp;
}
}