【问题标题】:(Java) Using StringTokenizer to Read from textfile with Array(Java) 使用 StringTokenizer 从带有数组的文本文件中读取
【发布时间】:2018-02-03 20:45:07
【问题描述】:

我正在尝试使用 StringTokenizer 从文本文件中读取数据。我正在编写的程序是阅读各种汉堡订单。我试图读取的数据(汉堡订单的配料)存储为大小为 7 的字符串数组。似乎一切正常,除了当我从文本文件中读取多个汉堡订单时,它看起来就像最后一个浇头数组替换了所有其他数组,这意味着我认为我的索引覆盖了前一个索引。我试图将数组复制到一个临时数组,但似乎我做得不对。任何帮助将不胜感激。

while (infile.hasNextLine())
  {

     line = infile.nextLine();
     StringTokenizer tokens = new StringTokenizer(value,", ");
     bun = tokens.nextToken();
     size = tokens.nextToken();


     line = infile.nextLine();
     tokens = new StringTokenizer(line,",");
     index = 0;
     while(tokens.hasMoreTokens())
     {
        burger_toppings[index] = tokens.nextToken();
        temporaryBurgerToppings= burger_toppings.clone();
        index++;

     }
  who = new Burger(size,bun,toppings);
  burger.add(who);
}

【问题讨论】:

  • 来自the documentation for StringTokenizer "StringTokenizer 是一个遗留类,出于兼容性原因保留,但不鼓励在新代码中使用它。" 不要使用StringTokenizer .
  • 我同意你的观点,但我必须使用 StringTokenizer,尽管我不想这样做
  • 能否贴出更详细的代码。看起来您发布的部分代码在循环中执行(可能是多行)并将索引每次设置为 0。
  • @AmitBera 我发布了从文件中读取的完整代码。似乎索引每次都设置为 0,但我怎样才能阻止它这样做,因为假设代码在技术上每次运行时都会创建两个单独的数组。例如,Burger 1 有自己的 bun、size 和 toppings 数组。 Burger 2 有自己的面包、大小和配料,任何其他额外的汉堡都会这样做。
  • @AmitBera 我之前尝试过,它给了我一个错误,说 ArrayIndexOutofBounds

标签: java arrays text-files stringtokenizer


【解决方案1】:

要解决这个问题,只需在外部 while 循环的开头为每个 Burger 订单创建一个新数组(即再次声明数组)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    相关资源
    最近更新 更多