如果我在文本文件中有一行整数,格式如下: [3,3,5,0,0] 我怎样才能将整数添加到arraylist? 我有这个,但它不起作用:
while (input.hasNextInt())
{
int tempInt = input.nextInt();
rtemp.add(tempInt);
}
如何处理逗号和括号?
答案 0 :(得分:2)
您可以使用ReplaceAll(String regex, String replacement)删除括号,然后使用Split()函数将字符串拆分为ArrayList,使用“,”作为分隔符。但是,这会将String拆分为只包含数字的较小字符串,因此请使用Integer.parseInt()将字符串转换为int。
答案 1 :(得分:2)
您需要记住文件中的数字是 strings ,并且需要先将其转换为实际的整数。假设在输入文件中每一行都有所描述的格式(例如:[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();
答案 2 :(得分: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));
}
答案 3 :(得分:0)
您可以读取整个字符串并使用正则表达式或字符串标记符
答案 4 :(得分: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));
}
}
您也可以使用正则表达式。
答案 5 :(得分: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