评分系统的哈希图迭代


import java.util.*;
import java.util.Map.Entry;

public class fff2 {
public static void main(String[] args) throws NullPointerException{
try {
LinkedHashMap<String, Integer> score = new LinkedHashMap<String,Integer>();
score.put("Fail",39);
score.put("Third Class", 49);
score.put("Second Class, Division 2",59);
score.put("Second Class, Division 1",69);
score.put("First Class",70);


Scanner scan = new Scanner(System.in);

System.out.println("What was your mark?");

int mark = scan.nextInt();

if(mark >100 && mark < 0) {
System.out.println("Invalid Input: out of range.");
}
for(String i: score.keySet()) {
if(mark< score.get(i)) {
System.out.println("You got a "+i);
break;
}
}
}

catch(InputMismatchException e) {
System.out.println("Invalid Input, program terminating");


}
}

所以我正在尝试制定一个评分系统,但它不起作用,我能帮点忙吗?我正试图让40分成为第三类的及格分数,但我想用一个哈希图来挑战自己,而不是切换的情况。

我想你想要这样的东西:

LinkedHashMap<String, Integer> score = new LinkedHashMap<String,Integer>();
score.put("Fail",39);
score.put("Third Class", 49);
score.put("Second Class, Division 2",59);
score.put("Second Class, Division 1",69);
score.put("First Class",70);


Scanner scan = new Scanner(System.in);

System.out.println("What was your mark?");

String keyScore = scan.nextString();

System.out.println(score.getOrDefault(keyScore, "Invalid Input: key not in map"));

在输入时,您放置地图中的一个键,而不是值。

更换

score.put("First Class",70);

带有

score.put("First Class",100);

并取代

if(mark< score.get(i)) {

带有

if(mark<= score.get(i)) {
import java.util.*;

public class fff {
public static void main(String[] args) throws NullPointerException{
try {
LinkedHashMap<Integer, String> score = new LinkedHashMap<Integer,String>();
score.put(70, "First class");
score.put(59, "Second Class, Division 1");
score.put(49, "Second Class, Divison 2");
score.put(39, "Third Class");

Scanner scan = new Scanner(System.in);


System.out.println("What was your mark?");

int mark = scan.nextInt();

if(mark >100 && mark < 0) {
System.out.println("Invalid Input: out of range.");
}
for(Integer i: score.keySet()) {
if(mark <= 39) {
System.out.println("You got a Fail");
System.exit(0);
}
if(mark>=i) {
System.out.println("You got a "+score.get(i));
break;
}

}


}
catch(InputMismatchException e) {
System.out.println("Invalid Input, program terminating");


}

}   
}

这是我的最后一个代码,现在可以工作了。

最新更新