读取整数字符串并向数组添加整数

时间:2014-02-07 07:01:42

标签: java arrays

所以我有一个给我的字符串。除了空白外,我已经删除了所有非整数字符。每一行整数的数量各不相同,有些行我会有一行,有时我有两行甚至三行。我现在需要读入每个整数并相应地将它们添加到数组列表中。目前这就是我所拥有的:

while(fileScanner.hasNextLine()){
        fileScanner.nextLine();
        line=lineReplacer.nextLine();
        String line2=line.replaceAll("[a-z]","").replaceAll("[A-Z]","").replaceAll(": ","").replaceAll(" ","").replaceAll(", ", " ");
        specs.add(Integer.parseInt(line2));
    }

我不知道如何在不知道错误的情况下添加每个int,而不知道有多少int是我当前拥有的行。

编辑:预期值将是诸如2 2 2或12 14 11,或仅10或29 30之类的内容。整数必须保持分离,因为它们需要添加到数组中。输入的唯一限制是它不超过三个整数。

3 个答案:

答案 0 :(得分:2)

试试这个:

String line="Hello 12 hi 458 h20 Bye 8";
String line2 = line.replaceAll("\\D+","");
System.out.println(line2);

输出:

12458208

您可以将所有值添加到列表中,如:

for(int i=0;i<line2.length();i++)
{
    specs.add(Integer.parseInt(line2.charAt(i)+""));
}

答案 1 :(得分:1)

试试这个:

    String line = "ABC 1000,snsdf 987";
    Pattern pattern = Pattern.compile("\\d+");
    Matcher matcher = pattern.matcher(line);
    List<Integer> list = new ArrayList<Integer>();
    while (matcher.find()) {
        String match = matcher.group();
        list.add(Integer.parseInt(match));
    }

如果需要,您可以将列表转换为数组:

    Integer[] array = new Integer[list.size()];
    array =  list.toArray(array);

答案 2 :(得分:0)

nextInt在这种情况下工作正常,它会跳过整数之间的空白区域。试试例如:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner fileScanner = new Scanner("1 2 23 4\n3");
        while (fileScanner.hasNextInt()) {
            System.out.println(fileScanner.nextInt());
        }
    }

}

这给出了输出:

1
2
23
4
3