用java输入三个整数,求最大值和最小值,为什么用一个for循环中最小值求出总是0,什么问题呢

2024-11-27 06:17:09
推荐回答(5个)
回答1:

你这样的判断是不合理的,我们打个比方,比如打了三个数字分别是1,2,3的话,
前面啊int [] a =new int[3];开辟空间,并给三个空间赋上初值0;
第一步:max=0,min=0;//a[0]的值吧?
然后循环判断,if(0<1)//显然是 赋值,if(0>1)//显然也不是,跳过。
第二轮2来了。if(1<2)//是的把a[i]的值赋值给max,在判断(0>2)//不是跳过
第三轮3来了。if(2<3)//是的赋值,再判断0>3
这样最后结果就是max是3,min是0;
如果你非要用这样的方法的话,你只要把min的初始值值改成很大很大的值就可以了,但是不推荐。
以下是合理的做法。
public class MaxminValues {
public static void main(String[] args) {
Scanner he=new Scanner(System.in);
int[]a=new int[3];
int max=0;
int min=0;
for(int i=0;i System.out.println("输入第"+(i+1)+"个学生的成绩:");//注意i+1
a[i]=he.nextInt();
if(a[max] max=i;
}if (a[min]>a[i]){
min=i;
}
} System.out.print("最大值:"+a[max]+"最小值:"+a[min]);
}
}

回答2:

原因是因为int数组如果不给初始值的话就等于0,所以起始的时候你的max和min都是0,那么如果你输入的都是正整数的话,就都比0大,到结束的时候你的min还是为0,就不对了,最简单的改法就是给min的初始值为100。因为成绩都是0~100正整数。并且你这样写代码有点不规范,成绩一般是0~100(当然也有高于100的情况,比如总分),所以如果是0~100的话就改成这样(当然还有其他的改法):

import java.util.Scanner;

public class MaxminValues {
public static void main(String[] args) {
Scanner he = new Scanner(System.in);
int[] a = new int[3];
int max = 0;
int min = 100;
for (int i = 0; i < a.length; i++) {
System.out.println("输入第" + (i + 1) + "个学生的成绩:");// 注意i+1
int keyinScore = he.nextInt();
if(keyinScore<0 || keyinScore>100) {
System.out.println("请输入0~100的值");
return;
}
a[i] = keyinScore;
if (max < a[i]) {
max = a[i];
}
if (min > a[i]) {
min = a[i];
}
}
System.out.print("最大值:" + max + "最小值:" + min);

}
}

回答3:

int max=a[0];int min=a[0];有问题最大值和最小值均初始化为0了

a[0]没赋过值,是整数缺省值0

若你输入的数值均是正数,肯定比0大,那么每次最小值均没动还是0
(同理若你输入全部是负数,那么最大值最后结果为0)
建议修改方案(1)int max=Integer.MIN_VALUE;int min= Integer.MAX_VALUE;
或者(2)输入第一个a[0]后,再将a[0]赋值给max和min

回答4:

那是因为你把min初始化为0了,这句初始化的int min=a[0];当你输入正数的时候最小值当然是0,你可以输入负数,最小值就对了

回答5:

其实这个题目可以不用for循环的  你可以把得到的三个整数放到一个int数组里 然后再调用Arrays.sort(int[]); 这个方法它会自动帮你按数字升序排序你只

要得到数组中的第一个值和最后一个值就可以了  代码如下
public static void main(String args[]) {

  System.out.println("请输入第一个整数:");

  int[] i=new int[3];

  i[0]=new Scanner(System.in).nextInt();

  System.out.println("请输入第二个整数:");

  i[1]=new Scanner(System.in).nextInt();

  System.out.println("请输入第三个整数:");

  i[2]=new Scanner(System.in).nextInt();

  Arrays.sort(i);

  System.out.println("最大值为:"+i[2]+"最小值为:"+i[0]);

 }