Java面向对象特性

救救孩子吧,Java也太难了吧(或许是我太笨了)

写了一半,下半段总是出错


创建类 student,包含五个私有成员变量,sno,sname,sex,age,grade;分别表示学号、姓
名、性别、年龄、成绩。
2) 类 student 带参数的构造方法,完成对 5 个成员变量的初始化赋值。
3) 类 student 中包含五个方法,
getSno():获取学号
getsname():获取姓名
getsex():获取性别
getAge():获取年龄
getGrade():获取成绩
4) 创建一个新类 MyPractice,在 main 方法中创建 5 个 student 类的实例对象,输出每个学 生的信息,并计算五个成绩的平均值、最大值和最小值。


import java.util.ArrayList;

public class MyPractice {
    public static void main(String[] args) {
        ArrayList<Student> students = new ArrayList<>();
        // TODO 自动生成的方法存根
        Student st1=new Student(2019001,"张","男",18,90);
        Student st2=new Student(2019004,"李","女",19,80);
        Student st3=new Student(2019003,"王","男",17,100);
        Student st4=new Student(2019004,"李","女",19,70);
        Student st5=new Student(2019005,"王","男",17,100);
        System.out.println(st1);
        System.out.println(st2);
        System.out.println(st3);
        System.out.println(st4);
        System.out.println(st5);
        students.add(st1);
        students.add(st2);
        students.add(st3);
        students.add(st4);
        students.add(st5);

        //计算五个成绩的平均值
        int sumGrade = 0;//五个成绩的总和
        int maxGrade = 0;//最大值
        int leastGrade = 0;//最小值
        for (int i = 0; i <students.size() ; i++) {
            sumGrade += students.get(i).getGrade();
            int grade = students.get(i).getGrade();//每个人的成绩
            if(i==0){//赋值不做比较
                maxGrade = grade;
                leastGrade = grade;
            }else {
                //如果大于maxGrade 最大值就是这个成绩
                if (grade > maxGrade) {
                    maxGrade = grade;
                }
                if (grade < leastGrade) {
                    leastGrade = grade;
                }
            }
        }
        System.out.println("最大值="+maxGrade);
        System.out.println("最小值="+leastGrade);
        System.out.println("计算五个成绩的平均值="+(sumGrade/5));
    }

}

 

 

这样写就可以了,试试吧。

这样写就可以了,试试吧。

这样写就可以了,试试吧。

不需要修改你的student类

# Student

 

package com.zhoutao123.algorithm;

/**
 * 定义学生类,实现Comparable接口用于比较
 *
 * @apiNote Comparable 接口是java中用来比较的一个接口,其比较的具体实现在compareTo方法中
 */
public class Student implements Comparable<Student> {
  // 学号
  private int sno;

  // 姓名
  private String sname;

  // 性别
  private String sex;

  // 年龄
  private int age;

  // 成绩
  private int grade;

  public Student(int sno, String sname, String sex, int age, int grade) {
    this.sno = sno;
    this.sname = sname;
    this.sex = sex;
    this.age = age;
    this.grade = grade;
  }

  @Override
  public int compareTo(Student o) {
    if (o == null) {
      return -1;
    }
    return this.grade > o.grade ? -1 : 1;
  }

  public int getSno() {
    return sno;
  }

  public String getSname() {
    return sname;
  }

  public String getSex() {
    return sex;
  }

  public int getAge() {
    return age;
  }

  public int getGrade() {
    return grade;
  }
}

# MyPractice

 

public class MyPractice {
  public static void main(String[] args) {
    Student s1 = new Student(2021001, "章1", "男", 18, 123);
    Student s2 = new Student(2021002, "章2", "女", 12, 109);
    Student s3 = new Student(2021003, "章3", "男", 14, 143);
    Student s4 = new Student(2021004, "章4", "女", 15, 109);
    Student s5 = new Student(2021005, "章5", "女", 16, 93);

    Student[] s = {s1, s2, s3, s4, s5};

    int sumGrade = s[0].getGrade();
    Student minStudent = s[0];
    Student maxStudent = s[0];
    for (int i = 1; i < s.length; i++) {
      sumGrade += s[i].getGrade();
      if (minStudent.compareTo(s[i]) < 0) {
        minStudent = s[i];
      }
      if (maxStudent.compareTo(s[i]) > 0) {
        maxStudent = s[i];
      }
    }
    System.out.printf("平均成绩:%s\n", sumGrade * 1.0 / s.length);
    System.out.printf("最高成绩:%s\n", maxStudent.getGrade());
    System.out.printf("最低成绩:%s\n", minStudent.getGrade());
  }
}

 

0基础学习JAVA(QQ项目实训):https://edu.csdn.net/course/detail/2981

其实大体上没啥问题。你只是没有调用对构造方法罢了。把对应的类型改一改,就好了。

    Student st1=new Student(2019001,"张","男",18,90);
    Student st2=new Student(2019004,"李","女",19,80);
    Student st3=new Student(2019003,"王","男",17,100);
    Student st4=new Student(2019004,"李","女",19,70);
    Student st5=new Student(2019005,"王","男",17,100);

 

这是我写的,有没有大佬给看看怎么修改啊,救救孩子吧谢谢啦

public class Student {
    private int sno;
    private String sname;
    private String sex;
    private int age;
    private int grade;
    public int getSno(){
        return sno;
    }
    public String getsname(){
        return sname;
    }
    public String getsex(){
        return sex;
    }
    public int getAge(){
        return age;
    }
    public int getGrade(){
        return grade;
    }
    public Student(int sno,String sname,String sex,int age,int grade){
        this.sno=sno;
        this.sname=sname;
        this.sex=sex;
        this.age=age;
        this.grade=grade;
    }
    public Student(String sno, String sname, String sex, String age, String string3) {
        // TODO 自动生成的构造函数存根
    }
    @Override
    public String toString(){
        return " "+sno+" "+sname+" "+sex+" "+age+" "+grade;
    }
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
    
    }
}

public class MyPractice {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Student st1=new Student("2019001","张","男","18","90");
        Student st2=new Student("2019004","李","女","19","80");
        Student st3=new Student("2019003","王","男","17","100");
        Student st4=new Student("2019004","李","女","19","70");
        Student st5=new Student("2019005","王","男","17","100");
        System.out.println(st1);
        System.out.println(st2);
        System.out.println(st3);
        System.out.println(st4);
        System.out.println(st5);
    }

}

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632