我需要使用datainputstream
来打印从用户输入的数据
和dataoutputstream,但这甚至没有正确输入。任何人都可以告诉我
我的代码出了什么问题?
import java.io.*;
class Employee
{
int id;
String name;
double salary;
}
public class Ch8Ex2
{
public static void main (String[] args)
{
Employee emp = new Employee();
try
{
File f1 = new File("emp1.dat");
f1.createNewFile();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
DataInputStream da = new DataInputStream(new FileInputStream(f1));
DataOutputStream ad = new DataOutputStream(new FileOutputStream(f1));
System.out.println("Enter your ID:");
emp.id = br.read();
System.out.println("Enter your name:");
emp.name = br.readLine();
System.out.println("Enter your salary:");
String str = br.readLine();
emp.salary = Double.parseDouble(str);
ad.write(emp.id);
ad.writeUTF(emp.name);
ad.writeDouble(emp.salary);
ad.flush();
ad.close();
System.out.println("ID:"+da.readInt());
System.out.println("Name:"+da.readUTF());
System.out.println("Salary:"+da.readDouble());
da.close();
}
catch(IOException e)
{
}
catch(NumberFormatException e)
{
}
}
}
答案 0 :(得分:2)
假设这是唯一的事情
emp.id = br.read();
应该是
emp.id = Integer.parseInt(br.readLine());
BufferedReader.read()
reads a single character
除非id
当然只是一个字符。
答案 1 :(得分:2)
您需要使用ad.writeInt(emp.id)
因为ad.write(int)
只写一个字节。
答案 2 :(得分:1)
类Employee
必须是可序列化的
class Employee implements Serializable
{
int id;
String name;
double salary;
}
还在catch块中打印异常然后你就可以得到错误。