2016-04-13 6 views
0

, когда я запускаю этот код в первый раз, у меня нет никаких проблем но когда запустить его снова уже существует файл и добавить еще данные в этом файле я вижу это исключениередактирование файла с помощью PrintWriter

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; 
    } 
} 
+0

У меня не возникает проблема при запуске кода. –

+0

Я использую этот класс в коде public class Pro { int ID; Название строки; int Родитель; состояние char; 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; }} –

+0

в первый раз, это нормально, чтобы написать то, что вы хотите в файле , но вторые после ввода данных исключения появляется –

ответ

0

Поскольку исключение выбрано в этой точке, массив должен содержать null по меньшей мере для одного конкретного индекса.

Смежные вопросы