【问题标题】:Issue using methods and an array使用方法和数组的问题
【发布时间】:2014-01-16 14:19:25
【问题描述】:

我的问题是使用另一种方法显示数据。我尝试了这两种方法,但没有输出。

我认为 ArrayList 中的对象在我将它们作为两个方法的参数时都消失了,也可能没有。

请帮我解决我的这个问题。还有更多的选项需要填写,我也需要一些帮助。

public class Student {
    private String IDNumber;
    private String firstName;
    private String middleName;
    private String lastName;
    private String degree;
    private int yearLevel;

    public Student() {
        this.IDNumber = IDNum;
        this.firstName = fName;
        this.middleName = mName;
        this.lastName = lName;
        this.degree = deg;
        this.yearLevel = level;
    }

    public void setIdNumber(String IDNumber) {
        this.IDNumber = IDNumber;
    }

    public String getIdNumber() {
        return IDNumber;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setMiddleName(String middleName) {
        this.middleName = middleName;
    }

    public String getMiddleName()
    {
        return middleName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setDegree(String degree) {
        this.degree = degree;
    }

    public String getDegree() {
        return degree;
    }

    public void setYearLevel(int yearLevel) {
        this.yearLevel = yearLevel;
    }

    public int getYearLevel() {
        return yearLevel;
    }

    /* @Override
    public String toString(){
        return ("ID Number: "+this.getIdNumber()+
                    "\nName: "+ this.getFirstName()+
                    " "+ this.getMiddleName()+
                    " "+ this.getLastName()+
                    "\nDegree and YearLevel: "+ this.getDegree() +
                    " - " + this.getYearLevel());
    } */

}
import java.util.ArrayList;
import java.util.Scanner;

public class test {

    public static void main(String[] args) {
        menu();
    }

    public static void menu() {
        Scanner in = new Scanner(System.in);

        int choice = 0;
        System.out.print("****STUDENT RECORD SYSTEM****\n\n");
        System.out.println("\t MENU ");
        System.out.println("[1]ADD STUDENT");
        System.out.println("[2]DISPLAY ALL");
        System.out.println("[3]DISPLAY SPECIFIC");
        System.out.println("[4]UPDATE");
        System.out.println("[5]AVERAGE");
        System.out.println("[6]EXIT");
        System.out.println("?");

        choice = in.nextInt();
        if (choice == 1) {
            options();
        }

        else if (choice == 2) {
            displayAll(student, studentList);
        }

        else if (choice == 3) {
            displaySpecific(student, studentList);
        }

    }

    public static void options() {
        Scanner in = new Scanner(System.in);
        ArrayList<Student> studentList = new ArrayList<Student>();
        char ans;
        String temp;

        int total;

        do {

            System.out.println("TOTAL: ");
            total = in.nextInt();

            Student[] student = new Student[total];

            for (int index = 0; index < student.length; index++) {
                student[index] = new Student();

                System.out.print("*********STUDENT INFORMATION*********\n\n");
                System.out.println("PRESS ENTER");
                in.nextLine();
                System.out.print("ID NUMBER: ");
                student[index].setIdNumber(in.nextLine());

                System.out.print("FIRST NAME: ");
                student[index].setFirstName(in.nextLine());

                System.out.print("MIDDLE NAME: ");
                student[index].setMiddleName(in.nextLine());

                System.out.print("LAST NAME: ");
                student[index].setLastName(in.nextLine());

                System.out.print("DEGREE: ");
                student[index].setDegree(in.nextLine());

                System.out.print("YEAR LEVEL: ");
                student[index].setYearLevel(in.nextInt());

                studentList.add(student[index]);

            }

            System.out
                    .print("Would you like to enter in a new student (y/n)? ");
            String answer = in.next();
            ans = answer.charAt(0);

        } while (ans == 'y');

        // SEARCH and DISPLAY SPECIFIC
        String id = new String();
        in.nextLine();
        System.out.print("Enter ID NUMBER: ");
        id = in.nextLine();

        for (int j = 0; j < studentList.size(); j++) {
            if (id.equals(studentList.get(j).getIdNumber())) {
                System.out.printf("STUDENT SEARCHED");
                System.out.print("\nID NUMBER:             "
                        + studentList.get(j).getIdNumber());
                System.out.print("\nFULL NAME: "
                        + studentList.get(j).getFirstName() + " "
                        + studentList.get(j).getMiddleName() + " "
                        + studentList.get(j).getLastName());
                System.out.print("\nDEGREE and YEAR: "
                        + studentList.get(j).getDegree() + "-"
                        + studentList.get(j).getYearLevel() + "\n\n");
                System.out.println();
            }
        }

        // DISPLAY ALL
        for (int i = 0; i < studentList.size(); i++) {
            System.out.printf("STUDENT[%d]", i + 1);
            System.out
                    .print("\nID NUMBER: " + studentList.get(i).getIdNumber());
            System.out.print("\nFULL NAME: "
                    + studentList.get(i).getFirstName() + "   "
                    + studentList.get(i).getMiddleName() + " "
                    + studentList.get(i).getLastName());
            System.out.print("\nDEGREE and YEAR: "
                    + studentList.get(i).getDegree() + "-"
                    + studentList.get(i).getYearLevel());
            System.out.println();
        }

        menu();

    }

    public static void displayAll(Student student,
            ArrayList<Student> studentList) {
        System.out.printf("STUDENT RECORD");

        for (int i = 0; i < studentList.size(); i++) {
            System.out.printf("STUDENT[%d]", i + 1);
            System.out
                    .print("\nID NUMBER: " + studentList.get(i).getIdNumber());
            System.out.print("\nFULL NAME: "
                    + studentList.get(i).getFirstName() + " "
                    + studentList.get(i).getMiddleName() + " "
                    + studentList.get(i).getLastName());
            System.out.print("\nDEGREE and YEAR: "
                    + studentList.get(i).getDegree() + "-"
                    + studentList.get(i).getYearLevel());
            System.out.println();
        }
    }

    public static void displaySpecific(Student student,
            ArrayList<Student> studentList) {
        String id = new String();
        in.nextLine();
        System.out.print("Enter ID NUMBER: ");
        id = in.nextLine();

        for (int j = 0; j < studentList.size(); j++) {
            if (id.equals(studentList.get(j).getIdNumber())) {
                System.out.printf("STUDENT SEARCHED");
                System.out.print("\nID NUMBER: "
                        + studentList.get(j).getIdNumber());
                System.out.print("\nFULL NAME: "
                        + studentList.get(j).getFirstName() + " "
                        + studentList.get(j).getMiddleName() + " "
                        + studentList.get(j).getLastName());
                System.out.print("\nDEGREE and YEAR: "
                        + studentList.get(j).getDegree() + "-"
                        + studentList.get(j).getYearLevel() + "\n\n");
                System.out.println();
            }
        }
    }
}

【问题讨论】:

    标签: java arrays methods arraylist


    【解决方案1】:

    移动

    ArrayList <Student> studentList = new ArrayList <Student>();
    

    options 方法到类字段。

    编辑:

    如你所见,现在studentList已经不是局部变量了

    public static void options()
    

    但属于类。

    无论如何,我编辑了一些方法的参数,因为您不需要将学生作为参数传递,因为现在它是类的一个字段。

    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class test {
        static ArrayList<Student> studentList = new ArrayList<Student>();
    
        public static void main(String[] args) {
            menu();
        }
    
        public static void menu() {
            Scanner in = new Scanner(System.in);
    
            int choice = 0;
            System.out.print("****STUDENT RECORD SYSTEM****\n\n");
            System.out.println("\t MENU ");
            System.out.println("[1]ADD STUDENT");
            System.out.println("[2]DISPLAY ALL");
            System.out.println("[3]DISPLAY SPECIFIC");
            System.out.println("[4]UPDATE");
            System.out.println("[5]AVERAGE");
            System.out.println("[6]EXIT");
            System.out.println("?");
    
            choice = in.nextInt();
            if (choice == 1) {
                options();
            }
    
            else if (choice == 2) {
                displayAll();
            }
    
            else if (choice == 3) {
                displaySpecific(student);// here  you should ask to the user what studend he want to show - here it continues to give you error
            }
    
        }
    
        public static void options() {
            Scanner in = new Scanner(System.in);
            char ans;
            String temp;
    
            int total;
    
            do {
    
                System.out.println("TOTAL: ");
                total = in.nextInt();
    
                Student[] student = new Student[total];
    
                for (int index = 0; index < student.length; index++) {
                    student[index] = new Student();
    
                    System.out.print("*********STUDENT INFORMATION*********\n\n");
                    System.out.println("PRESS ENTER");
                    in.nextLine();
                    System.out.print("ID NUMBER: ");
                    student[index].setIdNumber(in.nextLine());
    
                    System.out.print("FIRST NAME: ");
                    student[index].setFirstName(in.nextLine());
    
                    System.out.print("MIDDLE NAME: ");
                    student[index].setMiddleName(in.nextLine());
    
                    System.out.print("LAST NAME: ");
                    student[index].setLastName(in.nextLine());
    
                    System.out.print("DEGREE: ");
                    student[index].setDegree(in.nextLine());
    
                    System.out.print("YEAR LEVEL: ");
                    student[index].setYearLevel(in.nextInt());
    
                    studentList.add(student[index]);
    
                }
    
                System.out
                        .print("Would you like to enter in a new student (y/n)? ");
                String answer = in.next();
                ans = answer.charAt(0);
    
            } while (ans == 'y');
    
            // SEARCH and DISPLAY SPECIFIC
            String id = new String();
            in.nextLine();
            System.out.print("Enter ID NUMBER: ");
            id = in.nextLine();
    
            for (int j = 0; j < studentList.size(); j++) {
                if (id.equals(studentList.get(j).getIdNumber())) {
                    System.out.printf("STUDENT SEARCHED");
                    System.out.print("\nID NUMBER:             "
                            + studentList.get(j).getIdNumber());
                    System.out.print("\nFULL NAME: "
                            + studentList.get(j).getFirstName() + " "
                            + studentList.get(j).getMiddleName() + " "
                            + studentList.get(j).getLastName());
                    System.out.print("\nDEGREE and YEAR: "
                            + studentList.get(j).getDegree() + "-"
                            + studentList.get(j).getYearLevel() + "\n\n");
                    System.out.println();
                }
            }
    
            // DISPLAY ALL
            for (int i = 0; i < studentList.size(); i++) {
                System.out.printf("STUDENT[%d]", i + 1);
                System.out
                        .print("\nID NUMBER: " + studentList.get(i).getIdNumber());
                System.out.print("\nFULL NAME: "
                        + studentList.get(i).getFirstName() + "   "
                        + studentList.get(i).getMiddleName() + " "
                        + studentList.get(i).getLastName());
                System.out.print("\nDEGREE and YEAR: "
                        + studentList.get(i).getDegree() + "-"
                        + studentList.get(i).getYearLevel());
                System.out.println();
            }
    
            menu();
    
        }
    
        public static void displayAll() {
    
            for (int i = 0; i < studentList.size(); i++) {
                System.out.printf("STUDENT[%d]", i + 1);
                System.out
                        .print("\nID NUMBER: " + studentList.get(i).getIdNumber());
                System.out.print("\nFULL NAME: "
                        + studentList.get(i).getFirstName() + " "
                        + studentList.get(i).getMiddleName() + " "
                        + studentList.get(i).getLastName());
                System.out.print("\nDEGREE and YEAR: "
                        + studentList.get(i).getDegree() + "-"
                        + studentList.get(i).getYearLevel());
                System.out.println();
            }
        }
    
        public static void displaySpecific(Student student) {
            String id = new String();
            in.nextLine();
            System.out.print("Enter ID NUMBER: ");
            id = in.nextLine();
    
            for (int j = 0; j < studentList.size(); j++) {
                if (id.equals(studentList.get(j).getIdNumber())) {
                    System.out.printf("STUDENT SEARCHED");
                    System.out.print("\nID NUMBER: "
                            + studentList.get(j).getIdNumber());
                    System.out.print("\nFULL NAME: "
                            + studentList.get(j).getFirstName() + " "
                            + studentList.get(j).getMiddleName() + " "
                            + studentList.get(j).getLastName());
                    System.out.print("\nDEGREE and YEAR: "
                            + studentList.get(j).getDegree() + "-"
                            + studentList.get(j).getYearLevel() + "\n\n");
                    System.out.println();
                }
            }
        }
    }
    

    【讨论】:

    • 我应该怎么做?有什么变化?
    • @kintzee619 已编辑。但实际上,请阅读代码并尝试理解更改。
    • 我已经阅读并研究了这些变化。非常感谢! :) 你是我的英雄!
    • hmmn..在menu()方法中,displayAll(students)和displaySpecific(student)发生编译错误:student, cannot find symbol..我该怎么办?
    • @kintzee619 阅读您的代码,根本没有使用 Student 参数。去掉它。查看编辑后的代码,在 displaySpecific 中,您应该询问想要查看并使用学生信息声明学生变量的用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多