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

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=a[0];int min=a[0];
for(int i=0;i<a.length;i++){
System.out.println("输入第"+(i+1)+"个学生的成绩:");//注意i+1
a [i]=he.nextInt();
if(max<a[i]){
max=a[i];
}if (min>a[i]){
min=a[i];
}
} System.out.print("最大值:"+max+"最小值:"+min);

}
}

你这样的判断是不合理的,我们打个比方,比如打了三个数字分别是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<a.length;i++){
System.out.println("输入第"+(i+1)+"个学生的成绩:");//注意i+1
a[i]=he.nextInt();
if(a[max]<a[i]){
max=i;
}if (a[min]>a[i]){
min=i;
}
} System.out.print("最大值:"+a[max]+"最小值:"+a[min]);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-15

原因是因为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);

}
}

第2个回答  2014-03-15
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本回答被提问者采纳
第3个回答  2014-03-15
那是因为你把min初始化为0了,这句初始化的int min=a[0];当你输入正数的时候最小值当然是0,你可以输入负数,最小值就对了
第4个回答  2014-03-15

其实这个题目可以不用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]);

 }

用java输入三个整数,求最大值和最小值,为什么用一个for循环中最小值求...
} System.out.print("最大值:"+a[max]+"最小值:"+a[min]);} }

用JAVA 输入三个数字,输出最大值和最小值
import java.util.Scanner;public class Demon{public static void main(String[] args){int[] input = new int[3]; \/\/定义输入的数组(3个数)Scanner in = new Scanner(System.in);\/\/定义输入方法System.out.println("输入第3个整数,空格隔开:");for (int i = 1; i < 4; i++) \/...

java求最大值和最小值
System.out.println("最大值是:" + max):;System.out.println("最小值是:" + min);

三个整数变量a,b,c,求最大值和最小值的java编程
public class TestA {public static void main(String[] args){\/\/定义abc三个参数值int a=3;int b=32;int c=320;\/\/定义最大值int max=0;\/\/定义最小值int min=0;\/\/假如a>b 先设置a为最大值,b为最小值if(a>b){max=a;min=b;}else{\/\/否则先设置b为最大值,a为最小值max=b;m...

java编程,输出3个数中的最大值和最小值
如下所示 String s1=args[0];String s2=args[1];String s3=args[2];int a1=Integer.parseInt(s1);int a2=Integer.parseInt(s2);int a3=Integer.parseInt(s3);int max,min;max=a1>a2? a1:a2;max=max>a3? max:a3;min=(a1<a2?a1:a2)<a3?(a1<a2?a1:a2):a3;System.out.println("...

...程序,输入三个数,输出其中的最大值和最小值.代码有点小问题_百度知...
你这个应该是把String类型的转为float类型的吧 a=Float.valueOf(in1.getText( ).toString()); \/\/abc这三句出错了语法错误,将“. class”插入到完整 Expression 中b=Float.valueOf(in2.getText( ).toString());求采纳

java编程:输入一批整数,输出其中的最大值和最小值,输入数字0循环结束...
先定义一个最大值的变量max,和最小值的变量min 然后用num变量来接收用户输入的数 然后判断用户输入的数是否等于0,如果等于0就退出,不等于0就判断num这个值是否大于变量max,如果大于,就把num的值赋给max 然后判断num值是否小于变量min(min的值默认不要设为0,设得尽量大一点)如果小于就把值...

java输入三个值,求最大最小值
package cn.marking.bean;public class Teacher{private int id;private String name = null;private int score1;private int score2;private int score3;private int score4;public Teacher(int id, String name, int score1, int score2, int score3,int score4){super();this.id = id;this....

...输入的3个整数,并输出这3个整数的最大值和最小值。
import javax.swing.JOptionPane;import javax.swing.JTextField;public class QuestionTwo { \/ JAVA 编写一个字符界面的程序,接受用户键盘输入的3个整数,并输出这3个整数的最大值和最小值。throws IOException \/ public static void main(String[] args) throws IOException { MyFrame frame = new My...

输入三个整数x,y,z,请把这三个数由小到大输出:用JAVA语言编程
题目:输入三个整数x,y,z,请把这三个数由小到大输出。1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。2.程序源代码:main(){ int x,y,z,t;scanf("%d%d%d",&x...

相似回答