有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java返回随机字符串键的整数值

这是我的21点项目,目前只返回1张卡。我正在努力使randomKey与HashMap中的值相等

public static void main(String[] args) {

    Random ran = new Random();
    Scanner in = new Scanner(System.in);

    HashMap<String, Integer> hash = new HashMap<String, Integer>();
    hash.put("2", 2);
    hash.put("3", 3);
    hash.put("4", 4);
    hash.put("5", 5);
    hash.put("6", 6);
    hash.put("7", 7);
    hash.put("8", 8);
    hash.put("9", 9);
    hash.put("10", 10);
    hash.put("Jack", 10);
    hash.put("Queen", 10);
    hash.put("King", 10);
    hash.put("Ace", 11);

    List<String> keyList = new ArrayList<>(hash.keySet());
    List<Integer> valueList = new ArrayList<>(hash.values());


    String[] colors = {"Spades", "Hearts", "Diamonds", "Clubs"};

    for (int i = 0; i < 1; i++) {
        int col = ran.nextInt(colors.length); // random color
        String randomKey = keyList.get(ran.nextInt(hash.size())); // random type
        int keyValue = valueList.get(ran.nextInt(hash.size())); 

        System.out.println(randomKey+ " of "+colors[col]);
        if (keyValue < 21) {System.out.println(keyValue);}
    } // returns a cards

我使用if (keyValue < 21) {System.out.println(keyValue);}测试 keyValue将等于随机键的唯一值。显然不是,但我需要它,这样我就可以计算出多张卡的总和,同时只打印出钥匙


共 (1) 个答案

  1. # 1 楼答案

    在这两行中:

        String randomKey = keyList.get(ran.nextInt(hash.size())); // random type
        int keyValue = valueList.get(ran.nextInt(hash.size()));
    

    您选择两个(不同的)随机数,并使用它们来获得一个键和一个值。由于对ran的两个调用都是独立的,因此不需要强制生成的值与生成的键相对应。我想你的意思是得到一个随机数来选择一张随机卡,然后使用HashMap查找与所选卡对应的值

        String randomKey = keyList.get(ran.nextInt(hash.size())); // random type
        int keyValue = hash.get(randomKey); 
    

    您可能会发现您走错了方向,因为在提供的代码中,您从未从hash读取