【问题标题】:editing a file with using printwriter使用 printwriter 编辑文件
【发布时间】:2016-04-13 05:05:34
【问题描述】:

当我第一次运行此代码时,我没有问题 但是当使用已经存在的文件再次运行它时 并在此文件中添加另一个数据 我看到了这个异常

Exception in thread "main" java.lang.NullPointerException
    at Main.main(Main.java:67)

这是第 67 行

writer.println(proc[j].ID+"\t"+proc[j].name+"\t"+proc[j].Parent+"\t"+proc[j].state);

这是我的代码

import java.util.Scanner;
    import java.io.*;
    public class Main {
        public static void main(String [] args) throws IOException{
            File pro =new File("process.txt");
            Scanner input = new Scanner (System.in);
            int [] ID_Container = new int[10];
            Pro [] proc = new Pro [10] ;
            int memory =1000;
            System.out.println("Enter ID , Name , Parent, State");
            boolean flag =true;

            int i =0;
            while(flag&&i<10){
                System.out.println("please enter the ID");
                int ID=input.nextInt();

                System.out.println("please enter the name");
                String name=input.next();

                System.out.println("please enter the parent");
                int Parent=input.nextInt();

                System.out.println("please enter the State");
                char state=input.next().charAt(0);

                System.out.println("please enter the size");
                int size=input.nextInt();

                if(ID<0||ID>10||ID_Container[ID-1]==1){
                    for (int j = 0; j < 10; j++) {
                        if(ID_Container[j]==0){
                            ID=j+1;
                            System.out.println("Your Id has changed to "+ ID);
                            break;
                        }
                    }
                }

                if(size<memory){
                    proc[i]=new Pro(ID,name,Parent,state,size);
                    ID_Container[ID-1]=1;
                    memory-=size;
                    System.out.println("Do you want to add another process\n1-yes 0-no");
                    int s =input.nextInt();

                    if(s==0)
                        flag= false;
                    i++;
                }
            }
        PrintWriter writer = new PrintWriter(new FileWriter(pro, true));
        writer.println("ID\tname\tparent\tstate");
            for (int j = 0; j < 10; j++) {
                if(ID_Container[j]==0)
                    continue;
                writer.println(proc[j].ID+"\t"+proc[j].name+"\t"+proc[j].Parent+"\t"+proc[j].state);
            }
        writer.close();
        }
    }

    public class Pro {
    int ID;
    String name;
    int Parent;
    char state;
    int size;
    Pro(int ID , String name , int Parent , char state,int size){
        this.ID=ID;
        this.name=name;
        this.Parent=Parent;
        this.state=state;
        this.size=size;
    }
}

【问题讨论】:

  • 我在运行你的代码时没有遇到这个问题。
  • 我在代码中使用这个类 public class Pro { int ID;字符串名称;诠释父;字符状态;整数大小; Pro(int ID , String name , int Parent , char state,int size){ this.ID=ID;这个名字=名字; this.Parent=父母; this.state=状态;这个.size=大小; } }
  • 第一次可以在文件中写入你想要的内容但是第二次输入数据后出现异常
  • 将您的 Pro 课程发布为对您问题的编辑,而不是在 cmets 中。
  • 请学习并遵循 Java 命名约定。它们的存在是为了让其他人(我们!)可以更轻松地理解您的代码。

标签: java file printwriter


【解决方案1】:

由于此时引发异常,因此数组必须包含至少一个特定索引的null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 2023-04-04
    相关资源
    最近更新 更多