如何在Java中存储来自未知大小文件输入的多个变量?
我的第一个Java编程作业完全是初学者。 对于我们的编程作业,我们将收到一个.txt文件,其中包含如下学生: 我的问题是:我有一个特定的类,用于将文件中的数据转换为变量,以便在将其打印到屏幕时用于不同的类。然而,我不知道从课程编号的输入文件中获取变量的好方法,因为该编号不是预先确定的。我能想到的迭代未知量的唯一方法是使用循环,但每次都会覆盖我的变量。另外,老师要求我们不要使用任何JCL课程(我真的不知道这意味着什么) 抱歉,如果我解释得不好,但我想不出更好的概念化方法。如果我能澄清,请告诉我 编辑:如何在Java中存储来自未知大小文件输入的多个变量?,java,variables,loops,file-io,Java,Variables,Loops,File Io,我的第一个Java编程作业完全是初学者。 对于我们的编程作业,我们将收到一个.txt文件,其中包含如下学生: 我的问题是:我有一个特定的类,用于将文件中的数据转换为变量,以便在将其打印到屏幕时用于不同的类。然而,我不知道从课程编号的输入文件中获取变量的好方法,因为该编号不是预先确定的。我能想到的迭代未知量的唯一方法是使用循环,但每次都会覆盖我的变量。另外,老师要求我们不要使用任何JCL课程(我真的不知道这意味着什么) 抱歉,如果我解释得不好,但我想不出更好的概念化方法。如果我能澄清,请告诉我 编
为了显示我现在使用的方法,我只是使用一个扫描器从文件中读取,对于扫描器inputStream,我使用nextInt()或next()从文件中获取变量。显然,当我不知道每个学生将有多少课时,这将不起作用。解析文件,创建一个POJO(让我们称之为模型)并将其存储在适当的集合中(可能一个List的实现就可以做到这一点)。顺便说一句,没有人会解决家庭作业,我相信这是这里的政策
类
实例变量
字符串名
字符串lastname
布尔值IsuitionPaid;//布尔原因isPaid将为true或false
串[]个课程
整数小时
串级
从文件中读取学生数据时,将其存储在构造函数中提到的相应数据类型中,然后创建类型为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();
}
}