Java 调用对象数组

Java 调用对象数组,java,arrays,object,Java,Arrays,Object,我想知道对“对象数组”进行函数调用的正确方法。我不确定,我的第一个想法是对象变量的作用域是导致函数调用错误的to函数的局部。我的第二个想法是,我应该先在main中声明对象 import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub //Function Calls r

我想知道对“对象数组”进行函数调用的正确方法。我不确定,我的第一个想法是对象变量的作用域是导致函数调用错误的to函数的局部。我的第二个想法是,我应该先在main中声明对象


import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    //Function Calls
    returnObjectArray();
    scanner();
    userInput(studentInfos,input ); //ERROR HERE is on the function call of Object Array



    }

    public static Object[] returnObjectArray() {

        StudentInfo[] studentInfos = new StudentInfo[2];
        return studentInfos;
    }

    public static Object scanner() {

        Scanner input = new Scanner(System.in);
        return input;

    }

    public static Object[] userInput(StudentInfo [] studentInfos, Scanner input) {
        int emplid;
        double quiz1;
          for (int i = 0; i < studentInfos.length; i++) {

            System.out.println("Enter student emplid number");
            studentInfos[i] = new StudentInfo();
            emplid = input.nextInt();
            studentInfos[i].setEmplid(emplid);

            System.out.println("Enter Quiz one percentage");
            quiz1 = input.nextDouble();
            studentInfos[i].setQuizScoreOne(quiz1);

            System.out.println("Enter Quiz two percentage");
            quiz1 = input.nextDouble();
            studentInfos[i].setQuizScoreTwo(quiz1);

            System.out.println("Enter Quiz three percentage");
            quiz1 = input.nextDouble();
            studentInfos[i].setQuizScoreThree(quiz1);
          }

        return studentInfos ;

    }

}



导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
//函数调用
returnObjectArray();
扫描器();
userInput(StudentInfo,input);//对象数组的函数调用出现错误
}
公共静态对象[]returnObjectArray(){
StudentInfo[]StudentInfo=新的StudentInfo[2];
返回学生信息;
}
公共静态对象扫描仪(){
扫描仪输入=新扫描仪(System.in);
返回输入;
}
公共静态对象[]用户输入(StudentInfo[]StudentInfo,扫描仪输入){
int emplid;
双quiz1;
for(int i=0;i
在方法returnObjectArray()之外,对studentInfo[]的引用不可见;这是本地参考资料。但是,您可以在调用(main)方法中创建一个新引用,并为其分配被调用方法的返回值。
StudentInfo[]StudentInfo=returnObjectArray()

对studentInfo[]的引用在方法returnObjectArray()之外不可见;这是本地参考资料。但是,您可以在调用(main)方法中创建一个新引用,并为其分配被调用方法的返回值。
StudentInfo[]StudentInfo=returnObjectArray()

方法中声明的
StudentInfo[]
的范围,
returnObjectArray
是此方法的本地范围。此外,一旦方法返回,该数组将被垃圾收集,
returnObjectArray
。方法中声明的
Scanner
对象的情况类似,
Scanner

首先,更换以下方法,如下所示:

public static StudentInfo[] returnObjectArray() {
    StudentInfo[] studentInfos = new StudentInfo[2];
    return studentInfos;
}

public static Scanner scanner() {
    Scanner input = new Scanner(System.in);
    return input;
}
StudentInfo[] studentInfos = returnObjectArray();
Scanner input = scanner();
userInput(studentInfos, input);
然后,将这些方法返回的值收集到相应类型的变量中,并将其传递给
userInput
,如下所示:

public static StudentInfo[] returnObjectArray() {
    StudentInfo[] studentInfos = new StudentInfo[2];
    return studentInfos;
}

public static Scanner scanner() {
    Scanner input = new Scanner(System.in);
    return input;
}
StudentInfo[] studentInfos = returnObjectArray();
Scanner input = scanner();
userInput(studentInfos, input);

方法中声明的
StudentInfo[]
的范围,
returnObjectArray
是此方法的本地范围。此外,一旦方法返回,该数组将被垃圾收集,
returnObjectArray
。方法中声明的
Scanner
对象的情况类似,
Scanner

首先,更换以下方法,如下所示:

public static StudentInfo[] returnObjectArray() {
    StudentInfo[] studentInfos = new StudentInfo[2];
    return studentInfos;
}

public static Scanner scanner() {
    Scanner input = new Scanner(System.in);
    return input;
}
StudentInfo[] studentInfos = returnObjectArray();
Scanner input = scanner();
userInput(studentInfos, input);
然后,将这些方法返回的值收集到相应类型的变量中,并将其传递给
userInput
,如下所示:

public static StudentInfo[] returnObjectArray() {
    StudentInfo[] studentInfos = new StudentInfo[2];
    return studentInfos;
}

public static Scanner scanner() {
    Scanner input = new Scanner(System.in);
    return input;
}
StudentInfo[] studentInfos = returnObjectArray();
Scanner input = scanner();
userInput(studentInfos, input);

return和lost,那么可能想获取return?return和lost,那么可能想获取return?为什么studentInfo[]在方法returnObjectArray()之外不可见。因为studentInfo是一个局部变量,请将它想象成一堆框。一个大盒子是静态字段,里面是实例字段(你没有),然后在里面是所谓的局部变量。那个盒子就是方法。方法无法到达变量的其他“框”(方法)内部。在您的情况下,您需要将returnObjectArray返回的数组分配给main中的局部变量,然后您可以将其传递给另一个方法。此外,您应该使用IDE(IntelliJ是我个人最喜欢的),IDE将帮助您更容易地解决这些问题。为什么studentInfo[]在方法returnObjectArray()之外不可见.由于studentInfo是一个局部变量,请将其想象为一堆框。一个大盒子是静态字段,里面是实例字段(你没有),然后在里面是所谓的局部变量。那个盒子就是方法。方法无法到达变量的其他“框”(方法)内部。在您的情况下,您需要将returnObjectArray返回的数组分配给main中的一个局部变量,然后您可以将其传递给另一个方法。此外,您应该使用IDE(IntelliJ是我个人的最爱),IDE将帮助您更轻松地解决这些问题。