如何在Java中存储来自未知大小文件输入的多个变量?

如何在Java中存储来自未知大小文件输入的多个变量?,java,variables,loops,file-io,Java,Variables,Loops,File Io,我的第一个Java编程作业完全是初学者。 对于我们的编程作业,我们将收到一个.txt文件,其中包含如下学生: 我的问题是:我有一个特定的类,用于将文件中的数据转换为变量,以便在将其打印到屏幕时用于不同的类。然而,我不知道从课程编号的输入文件中获取变量的好方法,因为该编号不是预先确定的。我能想到的迭代未知量的唯一方法是使用循环,但每次都会覆盖我的变量。另外,老师要求我们不要使用任何JCL课程(我真的不知道这意味着什么) 抱歉,如果我解释得不好,但我想不出更好的概念化方法。如果我能澄清,请告诉我 编

我的第一个Java编程作业完全是初学者。 对于我们的编程作业,我们将收到一个.txt文件,其中包含如下学生:

我的问题是:我有一个特定的类,用于将文件中的数据转换为变量,以便在将其打印到屏幕时用于不同的类。然而,我不知道从课程编号的输入文件中获取变量的好方法,因为该编号不是预先确定的。我能想到的迭代未知量的唯一方法是使用循环,但每次都会覆盖我的变量。另外,老师要求我们不要使用任何JCL课程(我真的不知道这意味着什么)

抱歉,如果我解释得不好,但我想不出更好的概念化方法。如果我能澄清,请告诉我

编辑:


为了显示我现在使用的方法,我只是使用一个扫描器从文件中读取,对于扫描器inputStream,我使用nextInt()或next()从文件中获取变量。显然,当我不知道每个学生将有多少课时,这将不起作用。

解析文件,创建一个POJO(让我们称之为模型)并将其存储在适当的集合中(可能一个List的实现就可以做到这一点)。顺便说一句,没有人会解决家庭作业,我相信这是这里的政策

  • 创建一个名为Student的

  • 在类内部使用
    实例变量

    字符串名

    字符串lastname

    布尔值IsuitionPaid;//布尔原因isPaid将为true或false

    串[]个课程

    整数小时

    串级

  • 创建此类的构造函数,该构造函数在其参数中采用以下参数

    学生(字符串fName、字符串lName、布尔值istPaid、字符串[]课程、整数cHours、字符串gr)

  • 从文件中读取学生数据时,将其存储在构造函数中提到的相应数据类型中,然后创建类型为student的对象

  • 使用数据创建
    学生对象后,将其存储到适当的集合中
    。 阵列列表、地图等

  • 也许这会有帮助:

    public static void analyzeData()
    {
        try
        {
            Scanner inputStream = new Scanner(new FileInputStream("Programming Assignment 1 Data.txt"));
            String str = inputStream.next();
            String[] s = str.split(" ");
            int numberOfStudents = Integer.parseInt(s[0]);
            int tuitionPerHour = Integer.parseInt(s[1]);
            System.out.println("Number of students: " + numberOfStudents);
            System.out.println("Tuition per hour: " + tuitionPerHour + "\n\n");
            for(int i = 0; i<numberOfStudents; i++)
            {
                String str1 = inputStream.next();
                String[] s1 = str1.split(" ");
                String firstName = s1[0];
                String lastName = s1[1];
                int rollNo = Integer.parseInt(s1[2]);
                String isTuitionPaid = s1[3];
                int numberOfCourses = Integer.parseInt(s1[4]);
                System.out.println("Details of student number " + (i+1));
                System.out.println("Name: " + firstName + " " + lastName);
                System.out.println("Roll No: " + rollNo);
                System.out.println("Is Tuition paid: " + (isTuitionPaid == "Y" ? "Yes" : "No"));
                System.out.println("Number of Courses taken: " + numberOfcourses + "\n");
                for(int j = 0; j<numberOfCourses; j++)
                {
                    System.out.println("Details of course no " + (j+1));
                    String str2 = inputStream.next();
                    String[] s2 = str2.split(" ");
                    String courseName = s2[0];
                    String courseNumber = s2[1];
                    int creditHours = Integer.parseInt(s2[2]);
                    String grade = s2[3];
                    System.out.println("Course Name: " + courseName);
                    System.out.println("Course Number: " + courseNumber);
                    System.out.println("Credit Hours: " + creditHours);
                    System.out.println("Grade: " + grade + "\n");
                }
            }
        }
    
        catch (FileNotFoundException e)
        {
            System.out.println("File Programming Assignment 1 Data.txt could not be found or opened.");
            e.printStackTrace();
            System.exit(0);        
        }
        catch(IOException ioe)
        {
            System.out.err("IOException has occurred");
            ioe.printStackTrace();
            System.exit(0);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    
    公共静态无效分析数据()
    {
    尝试
    {
    Scanner inputStream=新扫描仪(新文件inputStream(“Programming Assignment 1 Data.txt”);
    String str=inputStream.next();
    字符串[]s=str.split(“”);
    int numberOfStudents=Integer.parseInt(s[0]);
    int tutionperhour=Integer.parseInt(s[1]);
    System.out.println(“学生人数:+numberofstudent”);
    System.out.println(“每小时学费:+每小时学费+”\n\n”);
    
    对于(int i=0;iSolve?No.hits?我看这没什么问题。@bela vizer要了解更多关于家庭作业的问题,请参阅。还有。这很好,编程作业比这一方面更复杂,我并不需要解决方案,因为在这一点上,我真的想不出正确的开始方式。然而,我不知道如何创建列表,因此您的答案让我有点困惑。我正在使用扫描仪解析文件,并使用扫描仪inputStream.nextInt()或inputStream.next()逐字逐句进行分析,但当我不知道每个学生将有多少门课程时,这就行不通了。我们有很多方法来解析这个文本文件,我们也不确定你是如何处理它的。你的教授可能指的是JCL——Java类库。听起来他要求你在不依赖标准Java类库的情况下解决这个问题那有帮助吗?很抱歉没有把它包括进来。-1。看到了吗
    public static void analyzeData()
    {
        try
        {
            Scanner inputStream = new Scanner(new FileInputStream("Programming Assignment 1 Data.txt"));
            String str = inputStream.next();
            String[] s = str.split(" ");
            int numberOfStudents = Integer.parseInt(s[0]);
            int tuitionPerHour = Integer.parseInt(s[1]);
            System.out.println("Number of students: " + numberOfStudents);
            System.out.println("Tuition per hour: " + tuitionPerHour + "\n\n");
            for(int i = 0; i<numberOfStudents; i++)
            {
                String str1 = inputStream.next();
                String[] s1 = str1.split(" ");
                String firstName = s1[0];
                String lastName = s1[1];
                int rollNo = Integer.parseInt(s1[2]);
                String isTuitionPaid = s1[3];
                int numberOfCourses = Integer.parseInt(s1[4]);
                System.out.println("Details of student number " + (i+1));
                System.out.println("Name: " + firstName + " " + lastName);
                System.out.println("Roll No: " + rollNo);
                System.out.println("Is Tuition paid: " + (isTuitionPaid == "Y" ? "Yes" : "No"));
                System.out.println("Number of Courses taken: " + numberOfcourses + "\n");
                for(int j = 0; j<numberOfCourses; j++)
                {
                    System.out.println("Details of course no " + (j+1));
                    String str2 = inputStream.next();
                    String[] s2 = str2.split(" ");
                    String courseName = s2[0];
                    String courseNumber = s2[1];
                    int creditHours = Integer.parseInt(s2[2]);
                    String grade = s2[3];
                    System.out.println("Course Name: " + courseName);
                    System.out.println("Course Number: " + courseNumber);
                    System.out.println("Credit Hours: " + creditHours);
                    System.out.println("Grade: " + grade + "\n");
                }
            }
        }
    
        catch (FileNotFoundException e)
        {
            System.out.println("File Programming Assignment 1 Data.txt could not be found or opened.");
            e.printStackTrace();
            System.exit(0);        
        }
        catch(IOException ioe)
        {
            System.out.err("IOException has occurred");
            ioe.printStackTrace();
            System.exit(0);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }