计算平均值,字符串标记化练习

Calculating Average, A String Tokenization Exercise

我已经尝试让这个程序运行 3 天了。我也在各种网站和 Whosebug 上进行了研究,但并没有取得太大的成功。

该程序的目标是接收用户输入,该输入可以由任意数量的白色 space 和一个分号分隔。然后将添加整数并计算平均值。诀窍是分数也可以实现,并且可以采用以下格式:12/33 或 (12/33).

分数是满分 100 的百分比分数。

我成功地消除了白色space和分号我只是不确定我如何才能完成这段代码的计算方面,特别是处理分数。

这是我当前的代码:

public static void main(String[] args) {
    System.out.println("Enter a Set of Grades:");
    Scanner messageIn = new Scanner(System.in);
    String store = new String();
    store = messageIn.nextLine();
    store = store.trim().replaceAll(" +", "");
    //store = store.trim().replaceAll("(", "");
    //store = store.trim().replaceAll(")", "");
    String[] dataSet = store.split(";");
    //messageIn.close();
    for (int i = 0; i<dataSet.length; i++) {
        System.out.println(dataSet[i]);
    }
}

非常感谢您的帮助

我还没有走到这一步,但是例如,这段代码是我的输入:

98;37; 12/33; (33/90); 88; 120/150;

输出将是:

平均值为:62.67

像这样检查个人成绩 contains 是否为 / 并单独处理这种情况怎么样:

import java.util.Scanner;

class Main{
  public static void main(String[] args) {
    //Initialize scanner object
    Scanner scanner = new Scanner(System.in);

    //Prompt user for input
    System.out.print("Enter a Set of Grades:");
    String store = scanner.nextLine();

    //Remove all white space and round brackets
    store = store.replaceAll("[\(\)\s+]","");

    //Split input into individual grades
    String[] grades = store.split(";");

    double sum = 0;
    //Loop over each entered grade and add to sum variable
    for (String grade : grades) {
      if(grade.contains("/")) {
        double numerator = Double.parseDouble(grade.split("/")[0]);
        double denominator = Double.parseDouble(grade.split("/")[1]);
        sum += numerator/denominator * 100;
      } else {
        sum += Double.parseDouble(grade);
      }
    }

    System.out.printf("The average is: %.2f\n", sum/grades.length);
  }
}

用法示例:

Enter a Set of Grades: 98;37; 12/33; (33/90); 88; 120/150;
The average is: 62.67

试试看 here!