2013-09-30 43 views
-4

我想从文本文件中读取内容,然后将其设置为car class中的一些变量。但它不断向我显示“java.lang.NullPointerException”。我不知道它有什么问题。有人能告诉我该怎么办?不断显示:“java.lang.NullPointerException”

错误行是cars[0].setRegion(tokens[2]);

这里的文本文件。

CarInLot KLM456 ND Meter4 120

CarInLot VMK123 ME移动0

CarInLotDKC003 WA Meter5 30

Meter1无10

CarInLot IML84U ND Meter6 800

这里的测试类。

import java.util.Scanner; 
import java.io.*;   


public class test 
{ 
    public static void main(String[] args) throws IOException 
    { 

     // Get the filename. 

     String filename = "input.txt"; 

     // Open the file. 
     File file = new File(filename); 

     Scanner inputFile = new Scanner(file); 

     Car[] cars = new Car[4]; 


     while (inputFile.hasNext()) 
     { 

     String filecotent = inputFile.nextLine(); 

     String[] tokens = filecotent.split(" "); 

     if(filecotent.startsWith("CarInLot")){ 

      cars[0].setRegion(tokens[2]); 

      cars[0].setMinutes(Integer.parseInt(tokens[4])); 
     } 

     if(filecotent.startsWith("Meter")){ 

      cars[0].setPlate(tokens[1]);  
     } 


     } 
     System.out.println(cars[0].toString()); 

     // Close the file. 
     inputFile.close(); 
    } 


} 

这是汽车类。

public class Car { 

    private String plate; 
    private String region; 
    private int minutes; 

    public Car(String carPlate, String carRegion, 
       int carMinutes) { 

     plate = carPlate; 
     region = carRegion; 
     minutes = carMinutes; 
    } 


    public Car(Car object2) { 

     plate = object2.plate; 
     region = object2.region; 
     minutes = object2.minutes; 
    } 

    public void setPlate(String pl) { 
     plate = pl; 
    } 

    public void setRegion(String re) { 
     region = re; 
    } 

    public void setMinutes(int mi) { 
     minutes = mi; 
    } 


    public String getPlate() { 
     return plate; 
    } 

    public String getRegion() { 
     return region; 
    } 

    public int getMinutes() { 
     return minutes; 
    } 

    public String toString() { 

     String string = "Car's information: " 
         + "\n" 
         + "\nLicense Plate: " + plate 
         + "\nLicense Plate Resgistration Region: " + region 
         + "\nParked time" + minutes 
         + "\n"; 

     return string; 

    } 


} 
+0

该文件是否也有这些空行,或者是您为该问题添加的内容? –

+0

显示您正在接收的确切错误语句及其指向的行 – Prateek

+0

使用堆栈跟踪发布完整错误。 –

回答

5

所以,你有这个代码

Car[] cars = new Car[4]; 

while (inputFile.hasNext()) 
{ 
    String filecotent = inputFile.nextLine(); 

    String[] tokens = filecotent.split(" "); 

    if(filecotent.startsWith("CarInLot")){ 
     cars[0].setRegion(tokens[2]); 
     cars[0].setMinutes(Integer.parseInt(tokens[4])); 
    } 
    ... 

cars被初始化,但它里面的元素都没有。你需要先初始化那些,否则他们是null,你会得到NullPointerException

cars[someIndex] = new Car(...); 

而且,你现在有你的代码的方式,你永远会覆盖阵列中的相同Car参考,即。索引为0.您可能想要使用递增索引来初始化每个元素。

相关问题