首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阵列数据文件操作

阵列数据文件操作
EN

Stack Overflow用户
提问于 2013-01-01 20:02:38
回答 3查看 87关注 0票数 0

我需要使用datainputstream将用户输入的数据打印出来

代码语言:javascript
复制
 and dataoutputstream but this is not even taking the inputs properly.Can anyone tell me
代码语言:javascript
复制
 what is wrong with my code?
代码语言:javascript
复制
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)
        {

        }
     }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-01 20:35:02

您需要使用ad.writeInt(emp.id),因为ad.write(int)只写入一个字节。

票数 2
EN

Stack Overflow用户

发布于 2013-01-01 20:26:36

假设这是唯一一件

代码语言:javascript
复制
emp.id = br.read();

应该是

代码语言:javascript
复制
emp.id = Integer.parseInt(br.readLine());

BufferedReader.read() reads a single character

当然,除非id只是一个字符。

票数 2
EN

Stack Overflow用户

发布于 2013-01-01 20:11:58

Employee必须是可序列化的

代码语言:javascript
复制
 class Employee implements Serializable
 {
   int id;
   String name;
   double salary;
 }

还可以在catch块中打印异常,这样就可以知道哪里出了问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14110255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档