【问题标题】:pass an array of objects from one method to another in java在java中将一组对象从一个方法传递到另一个方法
【发布时间】:2012-04-30 10:44:11
【问题描述】:

我想将存储在一个 for 循环中的对象数组传递给另一个方法中的第二个 for 循环以显示内容。例如:

public static Student[] add()
for(int i = 0; i < studentArray.length; i++)
        {
            System.out.print("Enter student name ");
            studentName = EasyIn.getString();
            System.out.print("Enter student Id ");
            studentId = EasyIn.getString();
            System.out.print("Enter mark ");
            studentMark = EasyIn.getInt();
            studentArray[i] = new Student(); //create object
            tempObject = new Student(studentName,studentId,studentMark);
            place = findPlace(studentArray,studentName, noOfElements);
            noOfElements = addOne(studentArray, place, tempObject, noOfElements);   
        }

到这里

public static void displayAll()
{
Student[] anotherArray = add();
    for(int i = 0; i < anotherArray.length ; i++)
    {
        System.out.print(anotherArray[i].toString());
    }   
}

在这里的菜单中调用它:

                        case '3': System.out.println("List All");
                                  displayAll();
                                  EasyIn.pause();

当我在菜单上按 3 时,它只是再次调用 add 方法,但是当我再次将值添加到数组中时,它会显示数组。我只想显示数组

【问题讨论】:

  • 您的代码无法编译。在您的add() 方法中,您应该使用大括号{},它应该是return Student[] 类型。
  • 问题不清楚,你能澄清一下你不想要的行为吗?是每次调用add() 时,您都在重建数组,而您只希望这种情况发生一次?
  • 它们只是我展示的代码示例,我应该粘贴我所做的所有代码并展示给您吗?
  • @john B 每次我调用 display 方法时,它都会重新构造数组然后显示它。我只是想显示它。
  • 如果add() 重构了数组,并且您在displayAll() 的开头(在其中)调用add(),则每次调用displayAll() 时,您都将重构数组。试试@mcfinnigan 或@Rahul Borkar 解决方案。

标签: java arrays object loops for-loop


【解决方案1】:

更改 displayAll() 以将数组作为参数:

public void displayAll(Student[] students) {
  ...
}

并按如下方式调用它:

Student [] students = add();

...

case '3': System.out.println("List All");
    displayAll(students);
    EasyIn.pause();

【讨论】:

  • 它在一定程度上工作得很好,每次它调用 Student [] students = add();它出于某种奇怪的原因调用 add() 方法
【解决方案2】:

您可以将 displayAll 方法定义更改为

public static void displayAll(Student[] anotherArray)
{    
    for(int i = 0; i < anotherArray.length ; i++)
    {
        System.out.print(anotherArray[i].toString());
    }   
}

然后在 switch case 之前从任何你想调用的地方调用 add 方法,并以 student[] 作为参数调用 displayAll 方法。

【讨论】:

    【解决方案3】:

    与其他人相似

    public void displayAll(Student... students) {    
        for(Student student:students)
            System.out.print(student+" "); // so there is space between the toString
        System.out.println();
    }
    

    public void displayAll(Student... students) {    
        System.out.println(Arrays.asList(students));
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-11
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多