Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 引用引用类中的数组变量,使用另一个方法对其排序,并调用case语句中的排序值_Java_Arrays_Reference Class - Fatal编程技术网

Java 引用引用类中的数组变量,使用另一个方法对其排序,并调用case语句中的排序值

Java 引用引用类中的数组变量,使用另一个方法对其排序,并调用case语句中的排序值,java,arrays,reference-class,Java,Arrays,Reference Class,我试图调用reference类中的数组变量,尝试使用用户定义的方法对它们进行排序,并将该方法调用到case语句上,如果用户选择特定的数字,将调用case语句。我想向用户提供一个选项,即学生的哪些属性将被排序(即姓名、课程…),并显示在case语句中调用并通过main方法调用的排序后的一维数组 以下是引用类中的变量: class RecordReference { private int idNumber; private String firstName = ""; priv

我试图调用reference类中的数组变量,尝试使用用户定义的方法对它们进行排序,并将该方法调用到case语句上,如果用户选择特定的数字,将调用case语句。我想向用户提供一个选项,即学生的哪些属性将被排序(即姓名、课程…),并显示在case语句中调用并通过main方法调用的排序后的一维数组

以下是引用类中的变量:

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;
  }
}