Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 调用方法在另一个类中创建数组_Java_Arrays_Methods_Arraylist - Fatal编程技术网

Java 调用方法在另一个类中创建数组

Java 调用方法在另一个类中创建数组,java,arrays,methods,arraylist,Java,Arrays,Methods,Arraylist,学生演示: public class studentDemo { public static void main(String[] args) throws IOException{ int runit = 0; StudentMenu run = new StudentMenu(); while (runit != 1) { run.menu(); } } } public class

学生演示:

public class studentDemo {
    public static void main(String[] args) throws IOException{
        int runit = 0;

        StudentMenu run = new StudentMenu();
        while (runit != 1) {
            run.menu();
        }
    }
}
public class StudentMenu {

    public Student func = new Student();
    List<Student> studentList = new ArrayList<Student>();

    String input;
    String input2;
    String input3;

    public void menu(){
        System.out.println("Choose an option: ");
        System.out.println("1) Add a student ");
        System.out.println("2) Display student list ");
        System.out.println("3) Exit ");

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {

            input = br.readLine();
            int choice = Integer.parseInt(input);
            System.out.println("Choice: " + choice);

            if(choice == 1){
                System.out.println("First name: ");
                input = br.readLine();
                System.out.println("Last name: ");
                input2 = br.readLine();
                System.out.println("Number of classes to add for student: ");
                input3 = br.readLine();
                int numberOfClasses = Integer.parseInt(input3);

                studentList.add(new Student(input, input2, numberOfClasses));

                func.createClassList(numberOfClasses);
            }

            if(choice == 2){
            }

            if(choice == 3){
                System.exit(0);
            }       
        }
        catch (IOException ioe){ 
            System.out.println("An unexpected error occured.");
        }
    }
}
public class Student{   

    private String firstName;
    private String lastName;
    private int classes;
    //Create array for classes
    private String[] classesList = new String[classes];

    public Student(){
        firstName = "no name";
        lastName = "no name";
        classes = 0;
    }

    //overloaded constructor
    public Student(String theFirstName, String theLastName, int theClasses){

        firstName = theFirstName;
        lastName = theLastName;
        classes = theClasses;
        System.out.println("Number of Classes: " + classes);
    }

    //Populating array
    public void createClassList(int classes){

        //Call array method
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try{    
            for(int i = 0; i < classes; i++){
                System.out.println("Number of Classes: " + classes);
                System.out.println("Enter class " + i + ":");
                String input = br.readLine();
                classesList[i] = input;
            }
        }
        catch (IOException ioe) { 
            System.out.println("An unexpected error occured.");
        }
    }

    //Getters
    public String getFirstName(){ return firstName; }

    public String getLasName(){ return lastName; }

    public int getNumberOfClasses(){ return classes; }

    //Setters
    public void setFirstName(String newFirstName){
        firstName = newFirstName;
    }

    public void setLastName(String newLastName){
        firstName = newLastName;
    }

    public void setNumberOfClasses(int newNumberOfClasses){
        classes = newNumberOfClasses;
    }
}
学生菜单:

public class studentDemo {
    public static void main(String[] args) throws IOException{
        int runit = 0;

        StudentMenu run = new StudentMenu();
        while (runit != 1) {
            run.menu();
        }
    }
}
public class StudentMenu {

    public Student func = new Student();
    List<Student> studentList = new ArrayList<Student>();

    String input;
    String input2;
    String input3;

    public void menu(){
        System.out.println("Choose an option: ");
        System.out.println("1) Add a student ");
        System.out.println("2) Display student list ");
        System.out.println("3) Exit ");

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {

            input = br.readLine();
            int choice = Integer.parseInt(input);
            System.out.println("Choice: " + choice);

            if(choice == 1){
                System.out.println("First name: ");
                input = br.readLine();
                System.out.println("Last name: ");
                input2 = br.readLine();
                System.out.println("Number of classes to add for student: ");
                input3 = br.readLine();
                int numberOfClasses = Integer.parseInt(input3);

                studentList.add(new Student(input, input2, numberOfClasses));

                func.createClassList(numberOfClasses);
            }

            if(choice == 2){
            }

            if(choice == 3){
                System.exit(0);
            }       
        }
        catch (IOException ioe){ 
            System.out.println("An unexpected error occured.");
        }
    }
}
public class Student{   

    private String firstName;
    private String lastName;
    private int classes;
    //Create array for classes
    private String[] classesList = new String[classes];

    public Student(){
        firstName = "no name";
        lastName = "no name";
        classes = 0;
    }

    //overloaded constructor
    public Student(String theFirstName, String theLastName, int theClasses){

        firstName = theFirstName;
        lastName = theLastName;
        classes = theClasses;
        System.out.println("Number of Classes: " + classes);
    }

    //Populating array
    public void createClassList(int classes){

        //Call array method
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try{    
            for(int i = 0; i < classes; i++){
                System.out.println("Number of Classes: " + classes);
                System.out.println("Enter class " + i + ":");
                String input = br.readLine();
                classesList[i] = input;
            }
        }
        catch (IOException ioe) { 
            System.out.println("An unexpected error occured.");
        }
    }

    //Getters
    public String getFirstName(){ return firstName; }

    public String getLasName(){ return lastName; }

    public int getNumberOfClasses(){ return classes; }

    //Setters
    public void setFirstName(String newFirstName){
        firstName = newFirstName;
    }

    public void setLastName(String newLastName){
        firstName = newLastName;
    }

    public void setNumberOfClasses(int newNumberOfClasses){
        classes = newNumberOfClasses;
    }
}
这是错误之前的输出:

Choose an option: 
1) Add a student 
2) Display student list 
3) Exit 
1
Choice: 1
First name: 
t
Last name: 
s
Number of classes to add for student: 
3
Enter class 0:
eng
键入eng后,立即出现错误。
据我所知,不应该有一个OutOfBoundsException,因为3是索引的限制,我只在一个类中键入

任何帮助都将不胜感激,谢谢

这是:

private int classes; // default value of 0

private String[] classesList = new String[classes];
创建长度为0的字符串数组,这对您没有多大用处。将classesList数组声明为您正在执行的字段,但仅在使用可行的非0 int值设置类之后,才为其分配一个新数组

private String[] classesList = null;

//overloaded constructor
public Student(String theFirstName, String theLastName, int theClasses)
{
    firstName = theFirstName;
    lastName = theLastName;
    classes = theClasses;

    classesList = new String[classes]; // THIS

    System.out.println("Number of Classes: " + classes);
}
试一试

代码中的另一个问题:

public Student func = new Student();
List<Student> studentList = new ArrayList<Student>();

studentList.add(new Student(input, input2, numberOfClasses));
func.createClassList(numberOfClasses);
public Student func=new Student();
List studentList=new ArrayList();
添加(新学生(输入,输入2,班级数));
函数createClassList(numberOfClasses);
您应该注意到,func是使用默认构造函数创建的 学生类中的classes变量不会用任何正确的值初始化,学生类中的字符串[]也不会正确创建
您正在对func调用createClassList,func是使用默认构造函数创建的,而不是使用用户输入的numberOfClasses

读一下我说的话,无水之城!:)

您可能想做什么:

public Student func = null;
List<Student> studentList = new ArrayList<Student>();

func = new Student(input, input2, numberOfClasses);
studentList.add(func);
func.createClassList(numberOfClasses);
public Student func=null;
List studentList=new ArrayList();
func=新学生(输入,输入2,班级数);
学生列表。添加(func);
函数createClassList(numberOfClasses);

能否尝试正确粘贴代码?这会帮助我们的。谢谢你回复我。我尝试在构造函数之后创建classesList。我想这会给classes变量一个值,不是吗?它似乎仍然不起作用。@Waterlesstraw:请告诉我更多。“它似乎仍然不起作用”告诉我们没有什么用处。