Java循环结构的输出效果

img

img


上面是实际输出,下面是期望输出

import java.util.Scanner;

class Students{//包括属性有:学号,姓名,性别,专业,三门课程成绩(计算机,数学,英语)
    int number;//求成绩总分,成绩平均分,各个属性的赋值方法,各个属性值的获取方法
    String name;
    String sex;
    String subject;
    int computergrade;
    int mathgrade;
    int englishgrade;
    public int getNumber() {
        return number;
    }
    public void setNumber(int number) {
        this.number = number;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String isSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getSubject() {
        return subject;
    }
    public void setSubject(String subject) {
        this.subject = subject;
    }
    public int getComputergrade() {
        return computergrade;
    }
    public void setComputergrade(int computergrade) {
        this.computergrade = computergrade;
    }
    public int getMathgrade() {
        return mathgrade;
    }
    public void setMathgrade(int mathgrade) {
        this.mathgrade = mathgrade;
    }
    public int getEnglishgrade() {
        return englishgrade;
    }
    public void setEnglishgrade(int englishgrade) {
        this.englishgrade = englishgrade;
    }
    
    Students(){        
    }
    int sum(int a,int b,int c) {//计算总分
        int sum=0;
        sum=a + b + c;
        return sum;
    }
    int average(int sum) {//计算平均分
        int average=0;
        average=sum/3;
        return average;
    }
    
    void Search(Students[] a) {//输入一个学生的学号或者姓名,输出该学生的所有信息。 //查找学生
        int cont = -1;
        Scanner in = new Scanner(System.in);
        System.out.println("请输入学号或姓名");
        String search = in.nextLine();
        for (int i = 0; i < 5; i++) {//equals比较字符串是否相等
          if (a[i].name.equals(search) || a[i].name.equals(search)) {
            cont = i;
            break;
          }
        }
        if (cont == -1) {
          System.out.println("信息不存在");
        } else {
          System.out.println(a[cont].number + a[cont].name +a[cont].sex+a[cont].subject+a[cont].computergrade+a[cont].mathgrade+a[cont].englishgrade);
        }
}
    
    void compare(Students[] a ) {//数学课程(输入的第2门课程)最高分同学学号、姓名和课程分数
        int change=0;
        for(int i=0;i<4;i++) {
            for(int j=0;j<3-i;j++) {
                if(a[j].mathgrade<a[j+1].mathgrade) { 
                    change=a[j].mathgrade;
                    a[j].mathgrade=a[j+1].mathgrade;
                    a[j+1].mathgrade=change;                    
                }            
            }
        }
        System.out.println( a[0].number + a[0].name +a[0].computergrade+a[0].mathgrade+a[0].englishgrade);
    }
    
    void extreme(Students[] a ){//总分最高与最低同学学号、姓名和课程分数    
        int []sum=new int[5];
        for(int i=0;i<5;i++) {
            sum[i]=a[i].sum(computergrade, englishgrade, mathgrade);
        }
        int change=0;
        for(int i=0;i<4;i++) {
            for(int j=0;j<3-i;j++) {
                if(sum[j]<sum[j+1]) {//sum[0]max sum[4]min
                    change=sum[j];
                    sum[j]=sum[j+1];
                    sum[j+1]=change;                    
                }            
            }
        }
        for(int i=0;i<5;i++) {
            if(sum[0]==a[i].sum(computergrade, englishgrade, mathgrade)) {
                System.out.println(a[i].number + a[i].name +a[i].computergrade+a[i].mathgrade+a[i].englishgrade);
            }
            if(sum[4]==a[i].sum(computergrade, englishgrade, mathgrade)) {
                System.out.println(a[i].number + a[i].name +a[i].computergrade+a[i].mathgrade+a[i].englishgrade);
            }
        }
    }
    
    
    
    void judge(Students[] a) {//有没有这样的学生存在:
        //总分大于所有学生的平均成绩,但是至少有一门课不及格(低于60分)。
        //若有,按行输出这些学生的全部信息;若没有,输出NOT EXIST。
        int []sum=new int[5];
        for(int i=0;i<5;i++) {
            sum[i]=a[i].sum(computergrade, englishgrade, mathgrade);
        }
        int []average=new int[5];
        for(int i=0;i<5;i++) {
            average[i]=sum[i]/3;
        }
        for(int i=0;i<5;i++) {
            for(int j=0;j<5;j++) {
                if(sum[i]>average[j]&&(a[i].computergrade<60||a[i].englishgrade<60||a[i].mathgrade<60)) {
                    System.out.println(a[i].number + a[i].name +a[i].sex+a[i].subject+a[i].computergrade+a[i].mathgrade+a[i].englishgrade);
                }else {
                    System.out.println("NOT EXIST");
                }
            }
        }
    }    
}    
    
public class StudentsDemo {
    public static void main(String args[]) {
        Students[] a = new Students[5];//001 aa male math 80 85 78
        Scanner reader=new Scanner(System.in);
        for(int i=0;i<5;i++) {
            a[i]=new Students();
            a[i].number=reader.nextInt();
            a[i].name=reader.nextLine();
            a[i].sex=reader.nextLine();
            a[i].subject=reader.nextLine();
            a[i].computergrade=reader.nextInt();
            a[i].mathgrade=reader.nextInt();
            a[i].englishgrade=reader.nextInt();                    
        }
        Students stu=new Students();
        stu.Search(a);
        stu.compare(a);
        stu.extreme(a);
        stu.judge(a);
        
    }

}

运行效果和源代码如上,但这个运行效果我看不太懂,即使后来在循环结构中添加了break也没有改善,望指点

你发了个实体类代码,没有发循环体的代码