我正在编写一个程序,要求我从文本文件中读取数据,然后使用该数据创建一个对象,然后将其存储在二维数组中。首先,我将首先向您提供我正在从文本文件中读取的数据样本。
Christian
Huygens
460
ICSE
D
1
J
-3
-4
-5
请注意,实际文本文档中的行之间没有空格。现在,我必须读取这些数据并将其存储在数组Student a[30][100]
中。为此,我使用了方法intialize_array()
,如下所示。
void initialize_array()throws IOException
{ BufferedReader br_1=new BufferedReader(new FileReader("D1.txt"));
int i=0; //Filling only the first row
for(int j=0;j<100;j++) //Looping through all students in section A
{
String a=br_1.readLine(); //First name
if(a!=null)
{
String b=br_1.readLine(); //Surname
int c=Integer.parseInt(br_1.readLine());//School Number
String d=br_1.readLine();//Current Board
String e=br_1.readLine();//Form
int f=Integer.parseInt(br_1.readLine());//Stream
String g=br_1.readLine();//House Name
int h=Integer.parseInt(br_1.readLine());
int m=Integer.parseInt(br_1.readLine());
int n=Integer.parseInt(br_1.readLine());
Student st=new Student(a,b,c,d,e,f,g,h,m,n); //These are all the fields of the Student class
this.a[i][j]=st;
String empty=br_1.readLine();
}
}
}
总共有30个部分,一个部分最多可以包含100名学生。此代码仅适用于一个部分,因此,行是预先确定的。对于那个特定的行/部分,我基本上填补了属于该部分的学生。完成此操作后,我使用Student类的display方法显示该部分中的所有学生。这种方法如下:
void display123()throws IOException
{ initialize_array();
for(int i=0;i<30;i++)
for(int j=0;j<100;j++)
{ if(a[i][j]!=null)
{
a[i][j].display();
}
}
}
作为参考,学生班的方法display()
如下:
void display()throws IOException
{
System.out.println("Name: "+first_name+" "+surname);
System.out.println("School Number :"+school_number);
System.out.println("House :"+house);
System.out.println("Current Board :"+current_board);
System.out.println("Form :"+form);
System.out.println("Stream :"+stream);
System.out.println("Late Mark(s) :"+late_mark);
System.out.println("Absent Mark(s) :"+absent_mark);
System.out.println("Present Mark(s) :"+present_mark);
}
上一个方法display123()
的输出让我惊慌失措。所有字符串都显示为前面的空值,如此
Name: nullChristian nullHuygens
School Number :460
House :nullJ
Current Board :nullICSE
Form :nullD
Stream :1
Late Mark(s) :-3
Absent Mark(s) :-4
Present Mark(s) :-5
类Student的构造函数如下:
public Student(String f,String s,int ss,String c, String ff,int sss,String h,int l,int a,int p)
{ first_name=first_name+f;
surname=surname+s;
school_number=ss;
current_board=current_board+c;
form=form+ff;
stream=sss;
house=house+h;
late_mark=l;
absent_mark=a;
present_mark=p;
}
答案 0 :(得分:0)
修剪琴弦只是解决症状,而不是根本原因。
&#34; null&#34;的原因出现在构造函数中:
first_name=first_name+f;
默认情况下,first_name
字段将初始化为空值。 sum运算符将它转换为&#34; null&#34;字符串并添加f
的给定值。
要正确解决此问题,请删除摘要:
first_name=f;