【发布时间】:2015-01-07 16:41:47
【问题描述】:
我的程序应该要求用户输入一些成绩。输入完成后,程序必须显示输入了多少次(或者换句话说,每个年级输入了多少次)。
例如,如果用户输入 2 次 3 级,则意味着共有 2 名学生获得了 3 级。如果输入 3 次 F 级,则意味着 3 名学生获得了不及格的 F 级,以此类推。 ...
最终的输出应该是这样的:
Example output:
grade F= 3 students
grade 3= 2 studnets
and so on....
...........................
...........................
现在我的问题是跟踪每个年级并将它们打印出来,说明每个年级输入了多少次(也意味着有多少学生获得了每个特定的年级)。我想不出办法来解决它。
我的代码:
package studentgrade;
import java.util.*;
public class StudentGrade {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("How many total grade you want to enter (Depending on the total number of students)? ");
int totalStudents = input.nextInt();
String grade[] = new String[totalStudents];
//asking user to enter grade
for (int i = 0; i < totalStudents; i++) {
System.out.println("Enter grade " + (i + 1) + ": ");
System.out.println("Choose only between grade 3 and F:\n");
grade[i] = input.next();
if (grade[i] == "3") {//3 defines the only passing grade
//Store that into a variable
} else if (grade[i].equalsIgnoreCase("F")) {//F defines the failing grade
//Store that into a variable
}//else{
//System.out.println("Invalid input. Try again");
//}
}
//Now print out which grade was entered how many times
}
}
【问题讨论】:
-
您需要使用额外的数组来存储有多少学生获得了特定的成绩。
-
可以使用一个int数组,每个索引代表一个等级。当用户输入一个新等级时,将该等级索引中元素的值加1。
-
或者您可以将所有成绩转储到一个数组或
ArrayList,然后在您需要知道时只计算每种类型的数量。 -
使用HashMap,键为等级。
-
另外,你不能用
==比较两个字符串。使用.equals()
标签: java arrays loops for-loop java.util.scanner