簡體   English   中英

使用 arrayList 創建菜單並使用文本文件作為輸入(bufferedReader)

[英]Using an arrayList to create a menu and using a text file as input(bufferedReader)

正如您在下面看到的,我嘗試為選項 1 創建一個 switch case。Name 2. Course 然后 Name 3. Year Level 然后 Name 4. Course 然后 Year Level 和 Name 5. Exit 我不知道如何使用 switch case 所以我可以根據菜單對所有東西進行排序。 我將使用可比較的,我只能編輯名為 compareTo 的方法。 我的大腦一片空白,我不知道從哪里開始。 20192215 Ang Bryan m BSCS 4 20192200 Santos Charlie m BSIT 2 20192452 Chua Leah f BSIS 4 20190012 Yee John m BSCS 2

這些是來自文本文件的輸入

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.FileReader;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    import java.util.Scanner;
    import java.util.Vector;

    public class Main {

    /**
     * @param args the command line arguments
     */
        public static void main(String[] args) throws IOException {
            try {
                 BufferedReader br = new BufferedReader(new FileReader("c://student.txt"));
                 char g;
                 int yl, I;
                 String ln, fn, id, cors, con;
                 Student v[] = new Student[4];
                 Scanner sc= new Scanner(System.in);
                 boolean en = true;
                 boolean ent = true;

                for(i = 0; i < 4; i++){
                    id = br.readLine();
                    ln = br.readLine();
                    fn = br.readLine();
                    g = br.readLine().charAt(0);
                    cors = br.readLine();
                    yl = Integer.parseInt(br.readLine());
                
                    v[i] = new Student(ln, fn, id, cors, g, yl);
                 }

            while(en == true){
                System.out.println("--------------------------------------");
                System.out.println("--------------------------------------");
                System.out.println("1. Name");
                System.out.println("2. Course then Name");
                System.out.println("3. Year Level then Name");
                System.out.println("4. Course then Year Level and the Name");
                System.out.println("5. Exit");
                System.out.println("--------------------------------------");
                System.out.println("--------------------------------------");
                System.out.println("Choose Menu: ");
                int choice = sc.nextInt();
                switch(choice){
                    case 1 :
                        Arrays.sort(v);
                        display_array(v);
                    break;
                    case 2 :
                        Arrays.sort(v);
                        display_array(v);
                    break;
                    case 3 :
                        Arrays.sort(v);
                        display_array(v);
                    break;
                    case 4 :
                        Arrays.sort(v);
                        display_array(v);
                    break;
                    case 5 :
                        en = false;
                        System.out.println("\n\n \nTHANK YOU FOR USING THE PROGRAM!!");
                    break;
                }
                if(en != false){
                    System.out.println("Press [Enter key] to continue");
                    try{
                        System.in.read();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
            } catch (FileNotFoundException e) {
                System.err.println("File not found");
            } catch (IOException e) {
                System.err.println("Unable to read the file.");
            }
        }
        public static void display_array(Student arr_v[]) throws IOException{
            System.out.println("--------------------------------------");
            for(int i = 0; i < arr_v.length; i++){
                arr_v[i].display();
            }
            System.out.println("--------------------------------------");
        }
    }```
        ```
        public class Student implements Comparable {
            private String lastname, firstname, studentid, course;
            private char gender;
            private int yearlevel;

        public Student(String ln, String fn, String id, String cors, char g, int yl) {
            lastname = ln;
            firstname = fn;
            studentid = id;
            course = cors;
            gender = g;
            yearlevel = yl;
        }

        public int compareTo(Object anotherObject) {
            Student anotherStudent = (Student) anotherObject;
            int compareResult =         
            this.course.compareTo(anotherStudent.lastname); 
            if(compare )
            return 0;  
        }
        public void display() {
            System.out.printf("ID: %-8s  Name: %-20s  Sex: %c  Course: %-8s  Year: %d\n", studentid, (lastname + ", " + firstname), gender, course, yearlevel );
        }

        public void setGender(char gender){
            this.gender = gender;
        }

        public char getGender(){
            return gender;
        }

        public void setLastname(String lastname){
            this.lastname = lastname;
        }

        public String getLastname(){
            return lastname;
        }

        public void setFirstname(String firstname){
            this.firstname = firstname;
        }

        public String getFirstname() {
            return firstname;
        }

        public void setStudentId(String studentid){
            this.studentid = studentid;
        }
    
        public String getStudentId(){
            return studentid;
        }

        public void setCourse(String course){
            this.course = course;
        }

        public String getCourse(){
            return course;
        }

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

        public int getYearLevel(){
            return yearlevel;
        }
    }```

所有程序員都需要學習如何調試他們的代碼。 如果您使用的是 IDE,那么我建議您學習如何使用它的調試器。

您有一些不需要的對readLine()方法的調用。 在下面的代碼中,我將這些行標記為注釋。 我還將display_array()main()合並到Student類中,這樣所有內容都將在一個類中,但您不必這樣做。

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Student {
    private String lastname, firstname, studentid, course;
    private char gender;
    private int yearlevel;

    public Student(String id, String ln, String fn, char g, String cors, int yl) {
        studentid = id;
        lastname = ln;
        firstname = fn;
        gender = g;
        course = cors;
        yearlevel = yl;
    }

    private static void display_array(Student[] v) {
        for (Student s : v) {
            s.display();
        }
    }

    public void display() {
        System.out.println("Name      : " + lastname + ", " + firstname);
        System.out.println("Student ID: " + studentid);
        System.out.println("Course    : " + course);
        System.out.println("Gender    : " + gender);
        System.out.println("Year Level: " + yearlevel);
    }

    public void setGender(char gender){
        this.gender = gender;
    }

    public char getGender(){
        return gender;
    }

    public void setLastname(String lastname){
        this.lastname = lastname;
    }

    public String getLastname(){
        return lastname;
    }

    public void setFirstname(String firstname){
        this.firstname = firstname;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setStudentId(String studentid){
        this.studentid = studentid;
    }

    public String getStudentId(){
        return studentid;
    }

    public void setCourse(String course){
        this.course = course;
    }

    public String getCourse(){
        return course;
    }

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

    public int getYearLevel(){
        return yearlevel;
    }

    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new FileReader("c:\\student.txt"));) {
            char g;
            int yl;
            int i;
            String ln;
            String fn;
            String id;
            String cors;
            Student v[] = new Student[Integer.parseInt(br.readLine())];
//            br.readLine();
            for (i = 0; i < v.length; i++) {
                id = br.readLine();
                ln = br.readLine();
                fn = br.readLine();
//                g = (char) br.read();
                g = br.readLine().charAt(0);
                cors = br.readLine();
                yl = Integer.parseInt(br.readLine());
//                if ((br.readLine()) != null)
//                    br.readLine();

                v[i] = new Student(id, ln, fn, g, cors, yl);
            }
            display_array(v);
        }
        catch (FileNotFoundException e) {
            System.err.println("File not found");
        }
        catch (IOException e) {
            System.err.println("Unable to read the file.");
        }
    }
}

我還更改了文件student.txt 根據您的代碼,文件的第一行需要是文件中的學生人數。 在您問題的示例文件中,有四個學生。

4
20192215
Ang
Bryan
m
BSCS
4
20192200
Santos
Charlie
m
BSIT
2
20192452
Chua
Leah
f
BSIS
4
20190012
Yee
John
m
BSCS
2
public final class Student {

    private final String id;
    private final String firstName;
    private final String lastName;
    private final char gender;
    private final String course;
    private final int yearLevel;

    public Student(String id, String firstName, String lastName, char gender, String course, int yearLevel) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.gender = Character.toUpperCase(gender);
        this.course = course;
        this.yearLevel = yearLevel;
    }

    public void display(PrintStream out) {
        out.format("Name       : %s, %s\n", lastName, firstName);
        out.format("Student ID : %s\n", id);
        out.format("Course     : %s\n", course);
        out.format("Gender     : %s\n", gender);
        out.format("Year Level : %d\n", yearLevel);
    }

}

public static void main(String... args) throws FileNotFoundException {
    File file = new File("c://student.txt");
    List<Student> students = readStudents(file);
    display(students);
}

private static List<Student> readStudents(File file) throws FileNotFoundException {
    try (Scanner scan = new Scanner(file)) {
        List<Student> students = new ArrayList<>();

        while (scan.hasNext()) {
            String id = scan.next();
            String lastName = scan.next();
            String firstName = scan.next();
            char gender = scan.next().charAt(0);
            String course = scan.next();
            int yearLevel = scan.nextInt();
            students.add(new Student(id, firstName, lastName, gender, course, yearLevel));
        }

        return students;
    }
}

private static void display(List<Student> students) {
    System.out.println("--------------------------------------");
    System.out.println("--------------------------------------");
    System.out.println("1. Name");
    System.out.println("2. Course then Name");
    System.out.println("3. Year Level then Name");
    System.out.println("4. Course then Year Level and the Name");
    System.out.println("5. Exit");
    System.out.println("--------------------------------------");
    System.out.println("--------------------------------------");

    students.forEach(student -> {
        student.display(System.out);
        System.out.println();
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM