【问题标题】:How to store int from file, to Arraylist using StringTokenizer in java? [closed]java - 如何在java中使用StringTokenizer将int从文件存储到Arraylist? [关闭]
【发布时间】:2015-11-15 16:39:53
【问题描述】:

我有一个 .txt 文件,我想在我的程序中读取它。我必须获取购买和价格的值并将它们存储到整数的 ArrayList 中。例如:

“买50价30”

我必须将 50 插入 ArrayList 购买,将 30 插入 ArrayList 价格。

import java.io.BufferedReader;
import java.util.StringTokenizer;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import java.util.ArrayList;

public class Store { 

public static void main(String[] args) {

    BufferedReader br = null;
    List <Integer> buy = new ArrayList<>();
    List <Integer> price = new ArrayList<>();

    // try to read the file
    try {

        br = new BufferedReader(new FileReader("Nets.txt"));
        String line;

        while ((line = br.readLine()) != null) {
            line = line.trim();
            line = line.replaceAll("/t", "");
            line = line.toLowerCase();
            StringTokenizer st = new StringTokenizer(line);
            while (st.hasMoreTokens()) {
                //Don't know what to do
            }
        }

    } catch (IOException e) {
        e.printStackTrace();
    }

}

}

【问题讨论】:

  • 解释问题,而不仅仅是你想做什么
  • 来自javadoc: "StringTokenizer 是一个遗留类,出于兼容性原因保留,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人使用@ String 的 987654324@ 方法或 java.util.regex 包代替。" --- 正则表达式非常适合:"(?i)\\s*buy\\s+(\\d+)\\s+price\\s+(\\d+)\\s*"

标签: java file arraylist java-io stringtokenizer


【解决方案1】:

如 cmets 中所述,请考虑使用 String.split(regex) 而不是 StringTokenizer

下面是代码的样子:

while ((line = br.readLine()) != null) {
    line = line.trim();
    line = line.replaceAll("/t", "");
    line = line.toLowerCase();

    // New code
    String[] tokens = line.split(" ");
    buy.add(Integer.valueOf(tokens[1]));
    price.add(Integer.valueOf(tokens[3]));
}

这种方法还可以提供更好的性能,因为您不需要遍历未使用的令牌。

【讨论】:

    【解决方案2】:

    请不要要求用勺子喂食。但在这里你可以做以下

    while (st.hasMoreTokens())  
    {  
    st.nextToken();  
    list1.add(st.nextToken());  
    st.nextToken();  
    list2.add(st.nextToken());  
    }  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2012-05-12
      • 2014-05-11
      • 2011-12-05
      相关资源
      最近更新 更多