如何解析出字符串的数字?

问题:从屏幕获取用户输入的字符串(如:“数学87分,物理76分,英语96分”),解析出中的成绩,计算总成绩和平均成绩,将结果输出在屏幕上。

此代码无法解析出字符串中的成绩,不知道错在哪里,或者是用错了函数?

public class t1 {
    public static void main(String[] args) {
        String str = "love23nex8889e";
        str = str.trim();
        String str2 = "";
        if (str != null && !"".equals(str)) {
            for (int i = 0; i < str.length(); i++) {
                if (str.charAt(i) >= 48 && str.charAt(i) <= 57) {
                    str2 += str.charAt(i);
                }
            }

        }
        System.out.println(str2);
    }
}

可以封窗成一个方法,传入每次的str:

运行结果:

public class TestExtractNum {
    public static void main(String[] args) {
        String str = "hate45bef9990f";
        str = str.trim();
        StringBuilder str2 = new StringBuilder();
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) >= 48 && str.charAt(i) <= 57) {
                if (count % 2 == 1) {
                    str2.append(str.charAt(i)).append(",");
                } else {
                    str2.append(str.charAt(i));
                }
            }
            count++;
            if (i == str.length() - 1) {
                str2.deleteCharAt(str2.length() - 1);
            }
        }
        System.out.println(str2);
    }
}