Я пишу программу, в которой предлагается ввести количество учеников, имя ученика и его оценки. Затем программа должна отсортировать значения и вывести лучшего ученика в классе (с оценкой выше 4, скажем, 5). Я не могу вывести имя студента. Программа выводит счет, она также сортирует значения, но не печатает значение типа String.
HashMap <String,Integer> student = new HashMap <String,Integer> ();
System.out.println("Enter a number of students: ");
int numberOfStudents = sc.nextInt();
String a ="";
Integer b = 0;
for(int i=0; i<numberOfStudents; i++){
System.out.println("Enter a student's name");
a=sc.next();
System.out.println("Enter the student's score");
b=sc.nextInt();
student.put(a, b);
}
student.entrySet()
.stream()
.sorted(HashMap.Entry.<String, Integer>comparingByKey())
.forEach(System.out::println);
if(b>4)
System.out.println("The best student is "+student.get(a));/*Here "a" is a string,isn't it? Firstly ,
I tried to get the values of both String and Integer by writing student.get(a,b); But the program
throws Exceptions saying "no suitable method found for get(String , Integer)".*/
Вот вывод:
Enter a number of students:
2
Enter a student's name
N
Enter the student's score
4
Enter a student's name
d
Enter the student's score
5
N=4
d=5
The best student is 5
Почему программа отображает " a "(String) как целое число, а при переключении a на b (Integer) отображается нулевое значение? И как мне наконец-то отобразить имя лучшего ученика и его оценку?