初学者:数组中的最小值(Java)
当我执行这个程序时,它会很好地打印最大值,而最小值总是打印为零。我继续抓我的头。。。有人能看出这里出了什么问题吗?谢谢你的关注初学者:数组中的最小值(Java),java,arrays,sorting,min,Java,Arrays,Sorting,Min,当我执行这个程序时,它会很好地打印最大值,而最小值总是打印为零。我继续抓我的头。。。有人能看出这里出了什么问题吗?谢谢你的关注 import java.util.Scanner; public class MinMax { public static void main(String[] args) { Scanner kb = new Scanner(System.in); int [] numbers = new in
import java.util.Scanner;
public class MinMax
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
int [] numbers = new int[5];
int max = numbers[0];
int min = numbers[0];
for (int i = 0; i < numbers.length; i++)
{
System.out.println("Enter your next number:");
numbers[i] = kb.nextInt();
if (numbers[i] > max)
{
max = numbers[i];
}
if (min > numbers[i])
{
min = numbers[i];
}
}
System.out.println("The maximum value in your array is " + max);
System.out.println("The minimum value in your array is " + min);
}
}
import java.util.Scanner;
公共类极小值
{
公共静态void main(字符串[]args)
{
扫描仪kb=新扫描仪(System.in);
int[]数字=新的int[5];
int max=数字[0];
int min=数字[0];
for(int i=0;i最大值)
{
max=数字[i];
}
如果(最小值>数字[i])
{
min=数字[i];
}
}
System.out.println(“数组中的最大值为”+max);
System.out.println(“数组中的最小值为“+min”);
}
}
问题在于,当声明数组时,数组中的整数被设置为0。将最小值设置为数字[0]
会将最小值设置为0。如果那不是你的min,你的代码就会失败
在这种情况下,您不需要数组-您可以存储用户输入的任何内容。除此之外,只需检查
i==0
,当它为0时,将min和max设置为number[0]
。(如果对max不这样做,所有负片的数组都会失败。)这很简单。min变量永远不会更新,因为每次计算min>numbers[i]时都返回false。让我们来看一个例子:
max = Arrays.stream(numbers).max().getAsDouble();
min = Arrays.stream(numbers).min().getAsDouble();
正如这里的其他答案所说,问题是
数字[0]
开始初始化为0
,因此无论用户输入的数字是多少,您的代码仍然会发现0
是最小值
您需要的是一个额外的状态来表示“我还没有任何最小值”。您可以使用一个额外的boolean
变量来表示此tate,或者如果您可以使用Integer
包装类型,则可以使用null
例如:
Integer minimum = null;
Integer maximum = null;
for (int i = 0; i < 5; i++) {
int number = kb.nextInt();
if (minimum == null || number < minimum) {
minimum = number;
}
if (maximum == null || number > maximum) {
maximum = number;
}
}
System.out.println("minimum: " + minimum);
System.out.println("maximum: " + maximum);
最小整数=null;
最大整数=空;
对于(int i=0;i<5;i++){
int number=kb.nextInt();
if(最小值==null | |数<最小值){
最小值=数量;
}
如果(最大值==null | |数>最大值){
最大值=数量;
}
}
System.out.println(“最小值:+最小值”);
System.out.println(“最大值:”+最大值);
使用所有负数进行测试将使最大值0和最小值=变为用户输入数组中的实际最小值!