如何将 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));
}
这样一来,你就不用关心处理数字格式异常了。
我想在 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));
}
这样一来,你就不用关心处理数字格式异常了。