【问题标题】:Sending different lines of txt to different objects将不同行的txt发送到不同的对象
【发布时间】:2016-02-25 03:31:03
【问题描述】:

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


文本文件如下所示:

Morely,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());

   }
   }
}  

【问题讨论】:

  • 你调用fileInput.nextLine()并忽略返回值,然后继续调用st.nextToken(),但是第一行没有留下任何标记。不要使用Scanner来读取文件,使用BufferedReader。不要使用StringTokenizer 解析行,使用split()。来自 javadoc:"StringTokenizer 是一个遗留类,出于兼容性原因保留,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人使用 Stringsplit 方法或 @改为 987654331@ 包。”
  • 我们的老师告诉我们这样输入文本文件,不要使用缓冲阅读器。在这一点上我很困惑,因为我想做的只是让扫描仪读取下一行,以便下一行的信息可以输入到动物类或对象中。

标签: java aggregation


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多