java之创建自定义类数组

时间:2023-01-17 22:17:39

java创建自定义类数组方法:

Student []stu = new Student[3];

for(int i = 0; i < 3; i ++)
{
stu[i] = new Student();

否则会提示空指针异常

eg:

package project;

import java.io.*;
import java.util.Scanner;
class Student
{
private int id;
private String name;
private int score;

public void setId(int id)
{
this.id = id;
}
public int getId()
{
return this.id;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
public void setScore(int score)
{
this.score = score;
}
public int getScore()
{
return this.score;
}
}
public class project2 {
File file = new File("E:/data.txt");
FileWriter filewrite = null;
BufferedWriter write = null;
FileReader fileread = null;
BufferedReader read = null;
Student []stu = new Student[3];
public void put()
{
try {
filewrite = new FileWriter(file);
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
write = new BufferedWriter(filewrite);
for(int i = 0; i < 3; i ++)
{
System.out.println("请输入第" + (i + 1) + "个学生的ID,姓名,成绩:");
Scanner in = new Scanner(System.in);
try {
String str = in.nextLine();
String data[] = str.split(" ");
for(int j = 0; j < 3; j++)
{
write.write(data[j]);
write.newLine();
}

} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

}
try {
write.close();
filewrite.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}


public void get()
{
int sum = 0;
double ave;
try {
fileread = new FileReader(file);
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
read = new BufferedReader(fileread);
for(int i = 0; i < 3; i ++)
{
stu[i] = new Student();
try {
stu[i].setId(Integer.parseInt(read.readLine()));
stu[i].setName(read.readLine());
stu[i].setScore(Integer.parseInt(read.readLine()));
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}

for(int i = 0; i < 3; i ++)
{
sum += stu[i].getScore();
}
ave = sum * 1.0/3;
System.out.println("学生的平均成绩为:" + ave);
try {
read.close();
fileread.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public static void main (String []args)
{
project2 pro = new project2();
pro.put();
pro.get();
}
}