这个代码可能有语法上的错误,但不知道哪里错了?

在Student类中有两个属性(学生成绩和id),在另一个Bubblesort类中建立一个数组,数组中为Student中属性的值,使用冒泡排序将学生的成绩进行冒泡排序,并输出学生的id。(不知道哪里错了呀,请大佬解答一下)

一、Student类

package assignment2;

public class Student {
    
    int Grade;
    String studentID;
    
    public void setGrade(int Grade){
        this.Grade = Grade;
    }
    
    public int getGrade(){
        return Grade;
    }
    
    public void setStudentID(String studentID){
        this.studentID = studentID;
    }
    
    public String getStudentID(){
        return studentID;
    }

}

二、Bubblesort类

package assignment2;

public class BubbleSort {
    
    public static void BubbleSort(Student[] stu){
        
        if(stu == null || stu.length == 1){
            return;
        }
        
        for(int i=0;i<stu.length-1;i++){
        
            boolean ifSorted = true;
            
            for(int j=0;j<stu.length-1-i;j++){
            
                Student temp;
                if(stu[j].getGrade()>stu[j+1].getGrade()){
                    
                    temp=stu[j];
                    stu[j]=stu[j+1];
                    stu[j+1]=temp;
                    
                    ifSorted = false;
                }
            }
            
            if(ifSorted) return;
            
            System.out.println("排序后: ");
            for(int j=0;j<stu.length;j++){
                
                System.out.println(stu[j].getStudentID());
            }
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Student[] stu = new Student[5];
        stu[0].setStudentID("001");
        stu[1].setStudentID("002");
        stu[2].setStudentID("003");
        stu[3].setStudentID("004");
        stu[4].setStudentID("005");
        stu[0].setGrade(89);
        stu[1].setGrade(92);
        stu[2].setGrade(73);
        stu[3].setGrade(65);
        stu[4].setGrade(86);
        
        System.out.print("排序前:");
        
        for(int j=0;j<stu.length;j++){
            
            System.out.println(stu[j].getStudentID());
        }
        
        BubbleSort(stu);
        
    }

}
 

public class Test {
  public static void main(String[] args){
    Student[] stu = new Student[5];
    // 先初始化
    for (int i = 0; i < 5; i++) {
      stu[i] = new Student();
    }
    stu[0].setStudentID("001");
    stu[1].setStudentID("002");
    stu[2].setStudentID("003");
    stu[3].setStudentID("004");
    stu[4].setStudentID("005");
    stu[0].setGrade(89);
    stu[1].setGrade(92);
    stu[2].setGrade(73);
    stu[3].setGrade(65);
    stu[4].setGrade(86);

    System.out.print("排序前:");

    for(int j=0;j<stu.length;j++){

      System.out.println(stu[j].getStudentID());
    }
    
    // 调用其他类的静态方法,需要带上类名
    BubbleSort.BubbleSort(stu);
  }
}

class BubbleSort {

  public static void BubbleSort(Student[] stu) {

    if (stu == null || stu.length == 1) {
      return;
    }
       
    for (int i = 0; i < stu.length - 1; i ++) {
      for (int j = 0; j < stu.length - 1 - i; j ++) {
        if (stu[j].getGrade() > stu[j + 1].getGrade()) {
          Student temp = stu[j];
          stu[j] = stu[j + 1];
          stu[j + 1] = temp;
        }
      }
    }
    
    // 修改了打印位置
    System.out.println("排序后: ");
    for (int j = 0; j < stu.length; j++) {
      System.out.println(stu[j].getStudentID());
    }
  }
}

class Student {

  int Grade;
  String studentID;

  public void setGrade(int Grade){
    this.Grade = Grade;
  }

  public int getGrade(){
    return Grade;
  }

  public void setStudentID(String studentID){
    this.studentID = studentID;
  }

  public String getStudentID(){
    return studentID;
  }

}

 

首先是在使用 Student[] 中的元素时,你需要初始化。即  stu[i] = new Student(),然后才能 stu[i].setStudentID("xxx")

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

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

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