2012-04-22 83 views
1

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

while (input.hasNextInt()) 

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

如何处理逗号和括号?

+0

这是功课拆分字符串? – 2012-04-22 16:05:59

回答

2

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

+1

如果他使用的是正则表达式,他可以从零开始读这些整数。不需要2次传球。 – 2012-04-22 16:05:36

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)); 
} 
0

你可以阅读整个字符串并使用正则表达式或也是字符串标记

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)); 
     } 
} 

你也可以使用正则表达式用于此目的。

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

相关问题