public class Main2{
public static void main(String[] args) throws FileNotFoundException {
String filename = "students.txt";
Student[] record = readData(filename);
record = new Student [record.length];
for(int i = 0; i < record.length; i++){
System.out.println(record[i]);
}
}
//Method for read data from the .txt file into an array
private static Student[] readData(String filename){
int arraysize = 0;
try{
Scanner s1 = new Scanner(new File(filename));
//Count elements in the file
while(s1.hasNext()){
arraysize++;
s1.next();
}
//Create an array and copy the elements into it
Student[] studentRecord = new Student[arraysize];
Scanner s2 = new Scanner(new File(filename));
for(int i = 0; i < arraysize; i++){
studentRecord[i].name = s2.next();
studentRecord[i].physic = s2.nextInt();
studentRecord[i].chemistry = s2.nextInt();
studentRecord[i].math = s2.nextInt();
studentRecord[i].average = (double)(studentRecord[i].physic + studentRecord[i].chemistry + studentRecord[i].math)/3;
// double roundedAvg = Math.round(average * 100.0) / 100.0;
// studentRecord[i].average = Math.round((physic + chemistry + math)/3 * 100.0)/100.0;
}
return studentRecord;
}
catch(FileNotFoundException e){
}
return null;
}
Jack 77 84 93
Tod 84 86 80
Name marksP marksC marksM
Exception in thread "main" java.lang.NullPointerException: Cannot assign field "name" because "<local3>[<local5>]" is null
at Main2.readData(Main2.java:40)
at Main2.main(Main2.java:10)
public Student(String name, int m1, int m2, int m3, double avg){
this.name = name;
int.mark1 = m1;
...
}
我做错了什么?如何修复代码?当我在Student类中初始化时,名称不应为null。
在从文件中读取数据的for
循环中,StudentRecord
还不包含实际的Student
对象。到目前为止,它只是一个占位符,可以容纳指定数量的student
对象。因此,您需要实际创建student
对象来存储在指定的数组中。
为此,请读取数据,将其暂时存储在变量中,然后通过已有的构造函数创建每个student
对象。
所以它实际上应该是这样的:
for(int i = 0; i < arraysize; i++){
String name = s2.next();
int physic = s2.nextInt();
int chemistry = s2.nextInt();
int math = s2.nextInt();
double average = (double)(physic + chemistry + math) / 3;
Student myStudent = new Student (name, physic, chemistry, math, average);
studentRecord[i] = myStudent;
}
while(s1.hasNextLine()){
arraysize++;
s1.nextLine();
}
问题内容: 我有多个包含不同类型的txt文件的zip文件。如下所示: 如何使用pandas读取每个文件而不提取它们? 我知道每个zip文件是否为1个文件,我可以对read_csv使用压缩方法,如下所示: 任何有关如何执行此操作的帮助都将非常有用。 问题答案: 你可以传递到构建从包装成一个多文件一个CSV文件。 码: 将所有内容读入字典的示例:
问题内容: 我正在尝试使用文件“ Tall.txt”将其中包含的整数写入名为“ tall”的数组中。它在某种程度上做到了这一点,但是当我运行它时,它会引发以下异常(: 为什么要完全做到这一点,以及如何将其删除?如我所见,我将文件读取为字符串,然后将其转换为int,这是非法的。 问题答案: 您可能想做这样的事情(如果您使用的是Java 5及更高版本)
问题内容: 你如何将文件内容读入Java? 以下是文件内容: 只需将每个单词读入。 问题答案: 此Java代码读取每个单词并将其放入ArrayList中: 如果要逐行而不是逐字阅读,请使用和。
这些文件的内容是: 学生(字符串名称,int studentID,int grade1,int grade2,int grade3,int grade4,int grade5,int grade6,int grade7,int grade8,int grade9,int grade10) 我对如何将学生的名字输入到数组中感到困惑,因为它包含了一个空格,所以当我尝试使用。next()时,它只得到学生
问题内容: 我想读取一个包含多行的名为history.txt的文本文件,并将最后一行的内容存储到一个名为“ tag”的变量中。 谢谢 问题答案:
} PS,arrayList中的内容插入到程序中的某个点,因此arrayList不是空的。