当前位置: 首页 > 知识库问答 >
问题:

HashMap获取输入的排序值+将最高值打印为字符串和整数

淳于玺
2023-03-14
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”(字符串)显示为整数,而将a切换为b(整数)时显示为空?而我如何才能最终显示最好的学生的名字和他的分数呢?

共有1个答案

李星波
2023-03-14

hashmap中,第一个值是键,第二个值与键相关联。

HashMap <String,Integer> student = new HashMap <String,Integer> (); 

这里字符串是关键字,这意味着HashMap是根据String排序的,而不是根据需要的integer。尝试使用以下方法,

HashMap <Integer, String> student = new HashMap <String,Integer> (); 

student.get(a)给出了与键a相对应的值,这就是在您的示例中获得integer输出的原因。

String key = entry.getKey();


String value = entry.getValue();
 类似资料:
  • 这是我的代码,但它并不像在BigDecimal变量中那样接受字符串 我为以下输入运行此程序:*9 -100, 50, 0, 56.6, 90, 0.12, .12, 02.34, 000.000* 并且输出为:[90, 56.6, 50, 2.34, 0.12, 0.12, 0, 0, -100]

  • 问题内容: 基本上,我的情况要求我检查在一种情况下由用户从键盘输入定义的字符串是否仅为字母字符,而在另一种情况下仅为数字。这是用Java编写的。 我当前的代码: 我需要确保StudentID仅是数字,并且每个名称段都是字母。 问题答案: 已经可以使用方法检查下一个标记是否具有给定的模式/类型。 这是一个使用正则表达式用于验证下一个标记仅由字母组成的示例: 这是一个示例会话: 要验证下一个令牌是可以

  • 问题内容: 我正在从AWS解析一个cron字符串,看起来像这样。有没有一种干净的方法可以追溯到使用Go的内置类型?该类型允许映射到,但似乎没有办法进行相反的操作。我想念什么吗?现在,我已经写了这个得到我使用这样的:。 问题答案: 前言: 我在中发布了此实用程序,请参见。 这是目前最好的方法。 最好的方法是使用包级变量,并且仅填充一次地图。 通过这种方式进行人口调查更加干净和安全: 测试它: 输出(

  • 问题内容: 我是Java的新手,正在尝试学习Maps的概念。 我想出了下面的代码。但是,我想同时打印“键字符串”和“值字符串”。 我只能找到只打印“键字符串”的方法。 问题答案: 有多种方法可以实现此目的。这是三个。 输出量

  • 如何将字符串值转换为整数,并将转换后的值乘以整数,这样我就可以得到300.00的结果。见下面的例子- 如果我像这样编码,那么我就会出错-

  • 问题内容: 所以我可以这样做: 但是我找不到办法。我想做类似的事情: 这也不起作用: 问题答案: Swift 2.0 您可以使用构造函数初始化Integer