Java 如何修改此代码以处理包含字符和整数的输入文本?
我试图获取一个包含字符和整数的input.txt文件,并只读取整数,以便执行计算。当我的input.txt文件只包含由空格和逗号分隔的整数时,此代码有效,但当我添加字符时失败 示例文件:Java 如何修改此代码以处理包含字符和整数的输入文本?,java,arraylist,parseint,Java,Arraylist,Parseint,我试图获取一个包含字符和整数的input.txt文件,并只读取整数,以便执行计算。当我的input.txt文件只包含由空格和逗号分隔的整数时,此代码有效,但当我添加字符时失败 示例文件: Student A: 90, 85, 70, 95 Student B: 65, 75, 90, 90 Student C: 80, 80, 75, 85 Student D: 100, 75, 80, 75 然而,当引入“学生A:”等时,我不确定如何处理,我收到如下异常: java.lang.NumberF
Student A: 90, 85, 70, 95
Student B: 65, 75, 90, 90
Student C: 80, 80, 75, 85
Student D: 100, 75, 80, 75
然而,当引入“学生A:”等时,我不确定如何处理,我收到如下异常:
java.lang.NumberFormatException: For input string: "Jeff: 10"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at test.ReadScore(test.java:17)
at test.main(test.java:27)
[]
最干净的方法是将输入文件转换为完整的CSV。学生A,M1,M2 如果不能这样做,则必须从输入行中删除学生姓名,然后使用分隔符逗号拆分字符串 伪代码如下所示 line=line.substring(line.indexOf(“:”)+1)
希望这有帮助。您将获得
java.lang.NumberFormatException
,因为您正在尝试从字符串中解析整数。
要仅获取数字作为输出,需要删除除数字以外的所有额外字符串。试试这个:
String[] tokens = line.replaceAll("[^0-9,.]", "").split("\\s*,\\s*");
希望这会有所帮助。例外情况非常清楚,您无法转换 杰夫:10 变成一个整数 您可以使用正则表达式并仅捕获数字部分
public static void main(String[] args) {
String n = "Student A: 90, 85, 70, 95";
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(n);
while(m.find()){
System.out.println(m.group());
}
}
此代码将被打印
90857095
比如:
String n = "Student A: 90, 85, 70, 95";
List<Integer> l = new ArrayList<>();
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(n);
while(m.find()){
//System.out.println(m.group());
l.add(Integer.parseInt(m.group()));
}
System.out.println("L:" + l);
String n=“学生A:90,85,70,95”;
列表l=新的ArrayList();
模式p=模式。编译(\\d+);
匹配器m=p.匹配器(n);
while(m.find()){
//System.out.println(m.group());
l、 add(Integer.parseInt(m.group());
}
System.out.println(“L:+L”);
public static void main(String[] args) {
String n = "Student A: 90, 85, 70, 95";
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(n);
while(m.find()){
System.out.println(m.group());
}
}
String n = "Student A: 90, 85, 70, 95";
List<Integer> l = new ArrayList<>();
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(n);
while(m.find()){
//System.out.println(m.group());
l.add(Integer.parseInt(m.group()));
}
System.out.println("L:" + l);