Java 引用引用类中的数组变量,使用另一个方法对其排序,并调用case语句中的排序值
我试图调用reference类中的数组变量,尝试使用用户定义的方法对它们进行排序,并将该方法调用到case语句上,如果用户选择特定的数字,将调用case语句。我想向用户提供一个选项,即学生的哪些属性将被排序(即姓名、课程…),并显示在case语句中调用并通过main方法调用的排序后的一维数组 以下是引用类中的变量:Java 引用引用类中的数组变量,使用另一个方法对其排序,并调用case语句中的排序值,java,arrays,reference-class,Java,Arrays,Reference Class,我试图调用reference类中的数组变量,尝试使用用户定义的方法对它们进行排序,并将该方法调用到case语句上,如果用户选择特定的数字,将调用case语句。我想向用户提供一个选项,即学生的哪些属性将被排序(即姓名、课程…),并显示在case语句中调用并通过main方法调用的排序后的一维数组 以下是引用类中的变量: class RecordReference { private int idNumber; private String firstName = ""; priv
class RecordReference {
private int idNumber;
private String firstName = "";
private String middleName = "";
private String lastName = "";
private int age;
private String yearLevel;
private String course = "";
private double gwa;
public RecordReference(int i, String f, String m, String l, int a, String y, String c, double g) {
idNumber = i;
firstName = f;
middleName = m;
lastName = l;
age = a;
yearLevel = y;
course = c;
gwa = g;
}
public int getIdNumber() {
return idNumber;
}
public String getFirstName() {
return firstName;
}
public String getMiddleName() {
return middleName;
}
public String getLastName() {
return lastName;
}
public int getAge() {
return age;
}
public String getYearLevel() {
return yearLevel;
}
public String getCourse() {
return course;
}
public double getGwa() {
return gwa;
}
public void setIdNumber(int idnumber) {
idNumber = idnumber;
}
public void setFirstName(String fName) {
firstName = fName;
}
public void setMiddleName(String mName) {
middleName= mName;
}
public void setLastNameName(String lName) {
lastName= lName;
}
public void setAge(int a) {
age = a;
}
public void setYearLevel(String yLevel) {
yearLevel = yLevel;
}
public void setCourse(String c) {
course = c;
}
public void setGwa(int gwa) {
gwa = gwa;
}
public String toString() {
return String.valueOf(System.out.printf("%-15s%-15s%-15d%-15d%n",
firstName, course , yearLevel ,gwa));
}
}//下课
我试图用这种排序方法调用它,但我不知道如何引用它
public static void sortFirstNameArray(String[] f){
for (int i = 0; i < f.length - 1; i++) {
for (int j = i + 1; j < f.length; j++) {
if (f[i].compareToIgnoreCase(f[j]) > 0) {
String temp = f[i];
f[i] = f[j];
f[j] = temp;
}
}
}
}
如果你能帮我,那就太好了。先谢谢你
我只是一名一年级的学生,我渴望学习解决这个错误。很高兴看到你自己尝试了这个问题,并纠正了你的问题,使之更清楚,因为我愿意帮助你 我已尽力使问题的解决方案尽可能接近您的解决方案,以便您能够理解它。也许有更好的方法来解决这个问题,但这不是这里的重点 首先,让我们创建一个名为
BubbleSorter
的类,它将保存排序方法:
public class BubbleSorter
{
//Explicitly provide an empty constructor for good practice.
public BubbleSorter(){}
//Method that accepts a variable of type RecordReference[], sorts the
//Array based on the firstName variable within each RecordReference
//and returns a sorted RecordReference[].
public RecordReference[] SortByFirstName(RecordReference[] recordReferencesList)
{
for (int i = 0; i < recordReferencesList.length - 1; i++) {
for (int j = i + 1; j < recordReferencesList.length; j++) {
if (recordReferencesList[i].getFirstName().compareToIgnoreCase
(recordReferencesList[j].getFirstName()) > 0) {
RecordReference temp = recordReferencesList[i];
recordReferencesList[i] = recordReferencesList[j];
recordReferencesList[j] = temp;
}
}
}
return recordReferencesList;
}
}
在主课程中,我提供了详细的注释来准确解释正在发生的事情。我想指出的一点是,我添加了一个名为GetMockArray()
的方法。这只是为了提供一个用于测试的RecordReference[]
,您可能希望在您选择的其他地方这样做
如果有什么不清楚的地方,或者你需要更多的帮助,那么就对这个答案发表评论,我会尽力进一步帮助你
谢谢。您的问题还不完全清楚,您是说您将拥有一个参考对象数组,并根据每个参考对象中的特定值对该数组进行排序?更多的代码也会有帮助。而不是截图。@RStevoUK是的,这就是我计划做的。但是我已经走到了死胡同。setter和getter是从复杂POJO中检索对象的两种基本方法。感谢您的澄清!我现在要在我的密码上试试。你帮了大忙,没问题。如果有帮助的话,别忘了把它标为正确答案。
System.out.print("Please choose what student attribute you want to
sort :");
choice = keyboard.nextInt();
// calling the process method here, but I receive syntax error
Process(f,a); // Here, I want to pass the sorted values back into the array but I get an error.
public class BubbleSorter
{
//Explicitly provide an empty constructor for good practice.
public BubbleSorter(){}
//Method that accepts a variable of type RecordReference[], sorts the
//Array based on the firstName variable within each RecordReference
//and returns a sorted RecordReference[].
public RecordReference[] SortByFirstName(RecordReference[] recordReferencesList)
{
for (int i = 0; i < recordReferencesList.length - 1; i++) {
for (int j = i + 1; j < recordReferencesList.length; j++) {
if (recordReferencesList[i].getFirstName().compareToIgnoreCase
(recordReferencesList[j].getFirstName()) > 0) {
RecordReference temp = recordReferencesList[i];
recordReferencesList[i] = recordReferencesList[j];
recordReferencesList[j] = temp;
}
}
}
return recordReferencesList;
}
}
class Main {
public static void main(String[] args) {
//Get a mock array from the GetMockArray() function.
RecordReference[] refArray = GetMockArray();
//Instantiate an instance of BubbleSorter.
BubbleSorter sorter = new BubbleSorter();
//Invoke the SortByFirstName method contained within the BubbleSorter
//and store the sorted array in a variable of type RecordReference[] named
//sortedResult.
RecordReference[] sortedResult = sorter.SortByFirstName(refArray);
//Print out the results in the sorted array to check if they are in the correct
//order.
//This for loop is not required and is just so that we can see within the
//console what order the objects in the sortedResult are in.
for(int i = 0; i < sortedResult.length; i++)
{
System.out.println(sortedResult[i].getFirstName());
}
}
public static RecordReference[] GetMockArray()
{
//Instantiate a few RecordReferences with a different parameter for
//the firstName in each reference.
RecordReference ref1 = new RecordReference(0, "Ada", "Test", "Test", 22, "First",
"Computer Science", 1.0f);
RecordReference ref2 = new RecordReference(0, "Bob", "Test", "Test", 22, "First",
"Computer Science", 1.0f);
RecordReference ref3 = new RecordReference(0, "David", "Test", "Test", 22,
"First", "Computer Science", 1.0f);
//Create a variable of type RecordReference[] and add the RecordReferences
//Instantiated above in the wrong order alphabetically (Based on their firstName)
//class variables.
RecordReference[] refArray = {
ref2, ref3, ref1
};
return refArray;
}
}