【问题标题】:How to get input from user for Hashmap using Scanner如何使用 Scanner 从用户那里获取 Hashmap 的输入
【发布时间】:2017-09-14 15:20:07
【问题描述】:

如何使用扫描仪从用户那里获取Hashmap 的输入并打印相应的哈希图?

import java.util.HashMap;
import java.util.Scanner;

public class Map {

    public static void main(String[] args) {
        HashMap<Integer, Integer> hmap = new HashMap<>();
        Scanner in = new Scanner(System.in);

        for (int i = 0; i < 3; i++) {
            Integer a = in.nextInt();
            Integer b = in.nextInt();
            
            hmap.put(a, b);

            System.out.println(hmap.put(a, b));
        }

    }

}

我没有得到想要的输出。我想打印hmap中插入的内容。

【问题讨论】:

  • System.out.println(hmap.get(a))
  • 它在输出什么,你期望它输出什么,你希望它输出什么?
  • @Hugo 打印为空
  • 我想得到一个hashmap的o/p条目
  • 我的 o/p 为空

标签: java collections hashmap


【解决方案1】:
import java.util.*;

class hash1 {
    void dic(){
        HashMap<Integer,Integer> hmap = new HashMap<Integer,Integer>();
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        hmap.put(a,b);
        System.out.println(hmap);
    }
}
public class answer {
    public static void main(String[] args) {

        hash1 obj = new hash1();
        for(int z = 0;z < 3;z++){
            obj.dic();
        }





    }
}

【讨论】:

  • 请避免纯代码回答。添加解释。
【解决方案2】:

我找到了这个,和我想要的完全一样。

System.out.println("How many producs you want");
        int listOfItem = sc.nextInt();
        System.out.println("Type the product name and quantity you want to purchace and get the bill");
        HashMap<Integer, String> products = new HashMap<>();
        while(listOfItem-- >0){
        products.put(sc.nextInt(),sc.nextLine());
        }
        System.out.println(products);

Output of above program

【讨论】:

    【解决方案3】:
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    
    class Call {
        
        public static void main(String[] as) {
            getData();
        }
    
        public static void getData() {
            Map<Integer, String> hashmap = new HashMap<>();
            Scanner sc = new Scanner(System.in);
            System.out.print("Shashank Pathak\nEnter number of character: ");
            int n = sc.nextInt();
            int[] a = new int[n];
    
            for (int i = 0; i < a.length; i++) {
                Integer b = sc.nextInt();
                String c = sc.nextLine();
    
                hashmap.put(b, c);
            }
    
            for (Map.Entry<Integer, String> mp : hashmap.entrySet()) {
                System.out.println("\n" + mp.getKey() + " " + mp.getValue());
            }
        }
    }
    

    【讨论】:

      【解决方案4】:

      这是在运行时将数据放入HashMap 的另一种方式:

      import java.util.HashMap;
      import java.util.Map;
      import java.util.Scanner;
      
      class MapDemo {
      
          public static void main(String[] args) {
              HashMap<Integer, String> hmap = new HashMap<>();
              Scanner in = new Scanner(System.in);
      
              for (int i = 0; i < 3; i++) {
                  Integer a = in.nextInt();
                  String b = in.next();
      
                  hmap.put(a, b);
              }
      
              for (Map.Entry<Integer, String> m : hmap.entrySet()) {
                  System.out.println(m.getKey() + " " + m.getValue());
              }
          }
      }
      

      【讨论】:

        【解决方案5】:

        你希望这会做什么?错了,为什么要打印hmap.put(a,b)

        System.out.println(hmap.put(a,b));
        

        只需将其从 for 循环中取出并单独打印即可

         for (Map.Entry<Integer, Integer> pair: hmap.entrySet()) {
          System.out.println(pair.getKey() + "->" + pair.getValue());
        }
        

        【讨论】:

        • 我得到了答案:而不是 System.out.println(hmap.put(a,b));我应该使用 System.out.println(hmap);
        • 您仍然必须将 print 语句从 for 循环中取出,否则您将不得不为每个新条目重新打印整个地图
        【解决方案6】:

        HashMap 实用程序的 Javadoc 可以在 here 找到。

        要向 HashMap 添加键/值对,请使用 hashmap.put(x, y)

        稍后使用 hashmap.get(x) 将返回 y。

        编辑:从其他 cmets 看来,您正试图让它打印出键和值。如果您尝试打印出所有键和值,这样的方法可能会起作用。

        hashMap.forEach((e, k) -> {
            System.out.println("E: " + e + " K: " + k);
        })
        

        如果这不是您的预期目的,我强烈建议您阅读 javadocs 的方法摘要部分。

        【讨论】:

          【解决方案7】:

          将您的 System.out.println 语句更改为,

          System.out.println(hmap.get(a));
          

          【讨论】:

          • 如果输入是 a=1 b=2..我希望 o/p 作为 {1,2} 但如果我使用 system.out.println(hmap.get(a));它给了我 o/p 为 2
          • 我得到了答案:而不是 System.out.println(hmap.put(a,b));我应该使用 System.out.println(hmap);
          • 等于 hmap.toString()。你的问题不清楚哥们。读出这个,careerbless.com/samplecodes/java/beginners/collections_ds/…
          猜你喜欢
          • 2013-09-03
          • 1970-01-01
          • 2019-04-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-04
          • 2019-06-19
          • 1970-01-01
          相关资源
          最近更新 更多