Java 如何修改此代码以处理包含字符和整数的输入文本?

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

我试图获取一个包含字符和整数的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.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);