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:请告诉我更多。“它似乎仍然不起作用”告诉我们没有什么用处。