问题背景:
【问题描述】
编写一个Student类描述学生对象,输入若干学生对象信息并将其写入文件,然后读出并显示。
【输入形式】
【输出形式】
【样例输入】
3
Chen 19 3200389
Cheley 19 3100488
John 23 3400589
【样例输出】
Student name=Chen, age=19, id=:3200389
Student name=Cheley, age=19, id=:3100488
Student name=John, age=23, id=:3400589
个人解决方案
package Fanle;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Arrayq app = new Arrayq();
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
String name = sc.next();
int age = sc.nextInt();
String id = sc.nextLine();
app.add(name,age,id);
}
try (OutputStream op = new FileOutputStream(
"Day10\\src\\Fanle.txt");
ObjectOutputStream ob = new ObjectOutputStream(op))
{
ob.writeObject(app);
} catch (Exception e) {
e.printStackTrace();
}
try(InputStream ip = new FileInputStream("Day10\\src\\Fanle.txt");
ObjectInputStream oi = new ObjectInputStream(ip)){
Arrayq sb = (Arrayq) oi.readObject();
sb.show();
System.out.println("la");
}catch(Exception e){
e.printStackTrace();
}
}
}
class Student implements Serializable{
private final String name;
private final int age;
private final String id;
public Student(String name, int age, String id) {
this.name = name;
this.age = age;
this.id = id;
}
public String tString() {
return "Student " + "name="+ name + ", age=" + age +", id=:"+ id.substring(1);
}
//Student name=Chen, age=19, id=: 3200389
//Student name=Chen, age=19, id=:3200389
public String getName() {
return name;
}
}
class Arrayq implements Serializable{
private ArrayList<Student> as = new ArrayList<>();
public void add(String name,int age,String id)
{
Student s = new Student(name,age,id);
as.add(s);
}
public void show(){
for (int i = 0; i < as.size(); i++) {
Student s = as.get(i);
//System.out.println(s.getName() + s.getAge() + s.getId());
System.out.println(s.tString());
}
}
}
在上述代码中的输出部分"id="的后面老多出一个空格,不知道什么原因引起的,最后选择了避开这个问题,用了String.subString()方法解决的,想求证一下是什么原因导致的多出来一个空格。
修改前
输出结果Student name=asd, age=45, id=: sld
修改后:Student name=asd, age=45, id=:sld