1

如果我在文本文件中有一行整数,格式如下: [3, 3, 5, 0, 0] 我该如何将整数添加到数组列表中?我有这个,但它不工作:

while (input.hasNextInt())

{
    int tempInt = input.nextInt();
    rtemp.add(tempInt);
}       

如何处理逗号和括号?

4

6 回答 6

2

您可以使用ReplaceAll(String regex, String replacement)删除括号,然后使用Split()函数将字符串拆分为 ArrayList 使用“,”作为分隔符。但是,这会将字符串拆分为仅包含数字的较小字符串,因此请使用 Integer.parseInt() 将字符串转换为 int。

于 2012-04-22T16:04:39.470 回答
2

您需要记住,文件中的数字是字符串,需要先转换为实际整数。假设在输入文件中每一行都具有所描述的格式(例如:),[3, 3, 5, 0, 0]这应该适用于将所有数字添加到单个ArrayList中,忽略空格、括号和逗号:

BufferedReader in = new BufferedReader(new FileReader("file.txt"));
List<Integer> ints = new ArrayList<Integer>();
String line = in.readLine();

while (line != null) {
    String[] numbers = line.split("[\\[\\],\\s]+");
    for (int i = 1; i < numbers.length; i++)
        ints.add(Integer.parseInt(numbers[i]));
    line = in.readLine();
}

in.close();
于 2012-04-22T16:10:38.053 回答
1

未经测试,但这应该有效。

string s = "[1,2,3,4,5]";
ArrayList list = new ArrayList();

foreach (string st in s.Replace("[", "").Replace("]", "").Split(','))
{
     list.Add(int.Parse(st));
}
于 2012-04-22T16:05:29.060 回答
0

您可以读取整个字符串并使用正则表达式或字符串标记器

于 2012-04-22T16:06:06.690 回答
0
//you already know how to read those lines into Strings. 
String s="[3, 3, 5, 0, 0]";
StringTokenizer tokenizer = new StringTokenizer(s, "[,]");
while(tokenizer.hasMoreTokens())
 list.add(Integer.parseInt(tokenizer.nextToken())

java.util.StringTokenizer 将帮助您使用指定的分隔符(“[”,”,或“]”)拆分字符串

参考http://docs.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html

于 2012-04-22T16:21:17.267 回答
0

你可以尝试这样的事情:

Scanner scanner = new Scanner(file);  

while (scanner.hasNextLine()) {  
      String line = scanner.nextLine();  
      String[] nums = line.substring(1,line.length() - 1).split(",");  
      for(String n:nums){  
            list.add(Integer.valueOf(n));
      }
}

您也可以为此使用正则表达式。

于 2012-04-22T16:07:51.903 回答