sort方法和toString的多个问题无法正常工作

时间:2017-12-01 02:18:25

标签: java arrays sorting tostring

我遇到了家庭作业问题......我遇到的问题是:

我的排序方法出现以下错误:

  • Main类型中的方法sort(int [])不适用于 参数(类)

  • studentArray无法解析为类型

  • 语法错误,插入“.class”以完成ArgumentList

我的toString方法似乎也没有在控制台中输出任何信息。

这是家庭作业问题:

对于本周的实验室,您将使用第23章中讨论的任何排序方法或选择排序对一组对象进行排序。这是你的选择。使用以下标准进行分配:

对象类应该是具有以下属性的Student:

id:integer

name:String

编写访问器,mutators,构造函数和toString()。

在主测试课程中,您将编写主要方法并执行以下操作:

创建数组中至少有5名学生的Student对象数组。

sort方法必须自己编写并包含在主类中。那种 方法将根据学生ID进行排序。

以未排序的顺序输出数组,因为它存在。

对数组进行排序

输出已排序的数组

这是我的主要课程:

public static void main(String[] args) {

    Student studentArray[] = new Student[5];

    for (int i=0; i < studentArray.length; i++) {
        studentArray[i] = new Student();
    }

    studentArray[0].id = 5555;
    studentArray[0].name = "Jim Jackson";
    studentArray[1].id = 4444;
    studentArray[1].name = "Craig Creedmoor";
    studentArray[2].id = 3333;
    studentArray[2].name = "Bill Biggums";
    studentArray[3].id = 2222;
    studentArray[3].name = "Frances Freeland";
    studentArray[4].id = 1111;
    studentArray[4].name = "Leslie Limerick";

    for (int i = 0; i<5; i++) {
        studentArray[i].toString();
    }

    sort(studentArray[]);

    for (int i = 0; i<5; i++) {
    studentArray[i].toString();
    }

}

public void sort(int[] studentArray) {
    for (int i = 1; i < studentArray.length; i++) {
        int currentElement = studentArray[i];
        int k;
        for (k = i -1; k >=0 && studentArray[k] > currentElement; k--) {
            studentArray[k + 1] = studentArray[k];
        }

        studentArray[k +1] = currentElement;
    }
}

这是我的学生班级

public int id;
public String name;

Student() {

}

public int getID() {
    return id;
}

public void setID(int i) {
    this.id = i;
}

public String getName() {
    return name;
}

public void setName(String n) {
    this.name = n;
}

public String toString() {
    return "The student's name is: " + this.name + "\n" +
           "The student's ID is: " + this.id;
}

1 个答案:

答案 0 :(得分:1)

所以根据作业指示,这是我从中得到的......

你的学生班需要一个构造函数,你正在不正确地向数组添加对象,你的sort方法也访问了数组中的元素,这是一个&#34;学生&#34;你正在将它与#34; int&#34;类型进行比较。为了解决这个问题,我让学生数组中的对象实际访问了ID。

另外....你的排序方法似乎对我不起作用。说明说你可以使用选择排序,这就是我实现的。如果您有疑问,请告诉我。

这应该有效,请告诉我,如果它不是因为我不知道你的学生课程是如何在你的项目中定义的。

public static void main(String[] args) {

        Student studentArray[] = new Student[5];

        studentArray[0] = new Student(5555, "Jim Jackson");
        studentArray[1] = new Student(4444, "Craig Creedmor");
        studentArray[2] = new Student(3333, "Bill Biggums");
        studentArray[3] = new Student(2222, "Frances Freeland");
        studentArray[4] = new Student(1111, "Leslie Limerick");

        sort(studentArray);

        for (int i = 0; i<5; i++) {
        System.out.println(studentArray[i].toString());
        }

    }

    public static void sort(Student[] arr) {
         for (int i = 0; i < arr.length - 1; i++)
            {
                int index = i;
                for (int j = i + 1; j < arr.length; j++)
                    if (arr[j].getID() < arr[index].getID()) 
                        index = j;

                int smallerNumber = arr[index].getID();
                String smallerString = arr[index].getName();
                arr[index].setID(arr[i].getID());
                arr[index].setName(arr[i].getName());
                arr[i].setID(smallerNumber);
                arr[i].setName(smallerString);
            }

}

然后是学生班

public class Student {

private int id;
private String name;

public Student(int id, String name){
    this.id = id;
    this.name = name;
}

    public int getID() {
        return id;
    }

    public void setID(int i) {
        this.id = i;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String n) {
        this.name = n;
    }

    public String toString() {
        return "The student's name is: " + this.name + "\n" +
               "The student's ID is: " + this.id;
    }

}