将不同的txt行发送到不同的对象

时间:2015-11-23 05:07:04

标签: java aggregation

我在聚合实验室工作,基本上我遇到的问题是,在我的txt文件中,文本文件的第一行显示一个人及其信息,接下来的两行显示他们的动物信息。我能够为这个人创建一个对象但是当我尝试将下一行发送到动物对象时,我不断收到java.util.noSuchElementsExceptions错误,我不知道为什么。有人可以帮帮我。

文本文件如下所示:

更重要的是,Robert,123 Anywhere Street,15396,4,234.56,2

布巴,牛头犬,58,4-15-2010,6-14-2011

露,牛头犬,49,4-15-2010,6-14-2011

Wilder,John,457 Somewhere Road,78214,3,124.53,1

拉​​尔夫,猫,12,01-16-2011,04-21-2012

Person p;
Animal a;

int number;
String line;
Scanner fileInput = new Scanner (new File("C://clientdata.txt"));
String animal;
int j;
j = 0;
String []Person =new String[j];
 while (fileInput.hasNext())
 {
   StringTokenizer st = new StringTokenizer(fileInput.nextLine(), ",");
   p = new Person();
   p.setFirstName (st.nextToken());
   p.setLastName(st.nextToken());
   p.setAddress(st.nextToken());
   p.setClientID(Integer.parseInt(st.nextToken()));
   p.setVisits(Integer.parseInt(st.nextToken()));
   p.setBalance(Double.parseDouble(st.nextToken()));
   p.setNumPets(Integer.parseInt(st.nextToken()));
   number = p.getNumPets();
   System.out.println(number);

   for(int i =0; i < number; i++)
   {
    fileInput.nextLine();
    a = new Animal();
    a.setName(st.nextToken());
    a.setType(st.nextToken());
    a.setWeight(Integer.parseInt(st.nextToken()));
    a.setDate(st.nextToken());
    a.setLastVisit(st.nextToken());

   }
   }
}  

1 个答案:

答案 0 :(得分:0)

for循环中的第一个语句应该是st = new StringTokenizer(fileInput.nextLine(),“,”);