有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

bufferedreader Java二维数组学生记录输入

我正在学习Java,我已经做了两天这个练习了。我在网上搜寻答案,但似乎找不到解决我问题的最佳答案: 1.如何存储字符串输入(比如fName、mName//或者我做得对吗?)变成一个二维数组。我见过一些语法如下的示例程序:

fName = fName.getText();
lName = lname.getText();

但它们似乎不符合我试图编写的代码,我也无法绕过它,因为我只是一个乞丐

  1. 如何打印所有循环之后的所有输入。就像用户在“输入学生人数”中输入“4”一样,将打印4个学生信息

以下是我最初的非工作代码:

import java.io.*;
public class Main {
    public static void main(String[] args)throws IOException{
        BufferedReader datain = new BufferedReader (new InputStreamReader (System.in));

        String fName, lName, course, yrLevel, bDate;
        int age;
        int arr [] [];
        int size;

     System.out.print("Enter number of students: \n");
        size = Integer.parseInt(datain.readLine());
        arr = new int [size][];

        for(int a = 0; a < arr.length; a++){

        System.out.print("Enter first name: \n");
        fName = datain.readLine();
        /*insert code here to store fName to two dimensional array
        like this one? arr [0] = new int [a]; */
        System.out.print("Enter last name: ");
        lName = datain.readLine();
        System.out.print("Enter course: ");
        course = datain.readLine();
        System.out.print("Enter year level: ");
        yrLevel = datain.readLine();
        System.out.print("Enter age: ");      
        age = Integer.parseInt(datain.readLine());
    }
       /* desired output be like:
       Student 1
       Name: Bat Man
       Year Level: Graduate School
       Birthdate: Feb. 20, 2012
       Age: 7

       Student 2
       Name: Super Man
       Year Level: Masteral
       Birthdate: Jan. 1, 2012
       Age: 8
        */
        System.out.println("Name: " +arr[0][0] + " " + arr[0] [1]); //just me showing my non-working idea of printing them.
    }
}

共 (1) 个答案

  1. # 1 楼答案

    与其使用多维数组,不如创建一个存储学生详细信息的小对象。像这样:

    public class Student {
    
        public String name;
        public String yearLevel;
        //etc...
    
        //constructor
        public Student(String name, String yearLevel, etc...) {
            this.name = name;
            this.yearLevel = yearLevel;
            //etc...
        }
    }
    

    然后从用户输入中获取数据,并使用它构建一个学生。然后学生可以存储在一个数组中:

    Student[] students = new Student[numberOfStudents];
    

    或者更好的是,您可以将学生存储在一个数组列表中,这样您就不必知道所需的学生人数:

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