计算平均值,字符串标记化练习
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!
我已经尝试让这个程序运行 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!