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

时间:2018-05-18 22:15:15

标签: java string average tokenize

我一直在尝试让这个程序工作3天。我一直在研究各种网站和堆栈溢出,我只是没有取得多大成功。

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

分数是100分中的百分比。

我成功地消除了空格和分号我只是不确定如何处理此代码的计算方面,特别是处理分数。

这是我目前的代码:

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; (九十〇分之三十三); 88;一百五十零分之一百二十〇;

输出结果为:

平均值为:62.67

1 个答案:

答案 0 :(得分:0)

如何判断个别成绩 contains a /并分别处理该案例:

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!