java - 返回随机字符串键的整数值
问题描述
这是我的二十一点项目,目前只返回 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 是否等于随机键的唯一值。显然不是,但我需要它,这样我就可以计算多张卡片的总和,同时只打印出钥匙。
解决方案
在这两行中:
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
.
推荐阅读
- git - 如何删除已合并的分支并保留日期
- java - 基于 Maven 的项目 java 如何包含来自私有 git 存储库的包源
- c# - 序列化前要修改的 WCF 服务引用类型属性
- javascript - 切换颜色声明 -
- appsource - Microsoft Appsource 入职 #appsource
- hibernate - Spring Boot数据初始化获取异常
- javascript - 将 Html 文本输入值获取到 Javascript 函数中
- yii2-advanced-app - Yii2 菜单小部件禁用父项链接
- timezone - Sequelize createdAt 和 updatedAt 时间戳错误
- java - 无法使用 Spring Boot 应用程序映射 html 文件