如何将 BufferedReader-Input(字符串)转换为整数并将其保存在 java 中的整数列表中?

How do I convert a BufferedReader-Input (String) to Integer and save it in an Integer List in java?

我想在 BufferedReader 给出的字符串中搜索整数。整数必须保存在整数列表中并返回。 我的想法是将字符串拆分为字符串 [] 并直接在数组列表中保存带有 Integer.parseInt 的整数,但不幸的是我只得到 NumberFormatExceptions,尽管字符串 [] 已填充。 有人可以给我一些建议吗?

    public List<Integer> getIntList(BufferedReader br) {
        List <Integer> List = new ArrayList<>();
        try{
            while(br.ready()){
                try{
                    String line = (br.readLine());
                    String [] arr = line.split("\s");
                    for (String s : arr) {
                        System.out.println(s);
                    }
                    if(line.equals("end")){
                        return List;
                    }
                    for (String s : arr) {
                        List.add(Integer.parseInt(s));

                    }
                }
                catch(IOException e){
                    System.err.println("IOException");
                }
                catch(NumberFormatException e){
                    System.out.println("Number");
                }
            }
            return List;
        }
        catch(IOException e){
            System.err.println("IOException");
        }
    return null;
    }

您在错误的地方捕获了 NumberFormatException,因此您无法继续号码搜索循环。您必须将此行 List.add(Integer.parseInt(s)); 包装到 try catch 块中。也不要以大写字母开头变量名。

您可以使用以下逻辑来检查数字字符串值。

for(String s : arr){
  if(s.chars().allMatch(Character::isDigit))
    List.add(Integer.parseInt(s));
}

这样一来,你就不用关心处理数字格式异常了。