于敏、王大珩(héng)、王希季、朱光亚、孙家栋、任新民、吴自良、陈芳允、陈能宽、杨嘉墀(chí)、周光召、钱学森、屠守锷、黄纬禄、程开甲、彭桓武,王淦(gàn)昌、邓稼先、赵九章、姚桐斌、钱骥、钱三强、郭永怀)。 设计实现一个代号对应名字的猜字系统,需要实现当猜测失败后,随机出提醒,提醒包括首字的笔画,总笔画,首字拼音字母等其中之一。请使用Java编写。
时间: 2023-09-14 19:06:15 浏览: 635
基于选择性集成神经网络的电路板故障智能诊断 (2014年)
好的,我可以帮你设计实现这个猜字系统。以下是我提供的一个 Java 代码示例:
```java
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
public class GuessNameSystem {
private static final Map<String, String> codeToNameMap = new HashMap<>();
static {
// 初始化代号和名字对应关系
codeToNameMap.put("YM", "于敏");
codeToNameMap.put("WDH", "王大珩");
codeToNameMap.put("WXJ", "王希季");
codeToNameMap.put("ZGY", "朱光亚");
codeToNameMap.put("SJD", "孙家栋");
codeToNameMap.put("RXM", "任新民");
codeToNameMap.put("WZL", "吴自良");
codeToNameMap.put("CFY", "陈芳允");
codeToNameMap.put("CNK", "陈能宽");
codeToNameMap.put("YJC", "杨嘉墀");
codeToNameMap.put("ZGZ", "周光召");
codeToNameMap.put("QXS", "钱学森");
codeToNameMap.put("TSE", "屠守锷");
codeToNameMap.put("HWL", "黄纬禄");
codeToNameMap.put("CKJ", "程开甲");
codeToNameMap.put("PHW", "彭桓武");
codeToNameMap.put("WGC", "王淦昌");
codeToNameMap.put("DJX", "邓稼先");
codeToNameMap.put("ZJZ", "赵九章");
codeToNameMap.put("YTB", "姚桐斌");
codeToNameMap.put("QJ", "钱骥");
codeToNameMap.put("QSQ", "钱三强");
codeToNameMap.put("GYH", "郭永怀");
}
private static final String[] HINTS = {
"首字笔画是5",
"总笔画数是13",
"首字拼音字母是Y",
"总笔画数是16",
"首字拼音字母是W",
"首字笔画是8",
"总笔画数是12",
"首字拼音字母是C",
"总笔画数是10",
"总笔画数是12",
"首字拼音字母是Z",
"总笔画数是15",
"首字拼音字母是Q",
"首字笔画是10",
"总笔画数是11",
"首字拼音字母是P",
"首字笔画是14",
"首字拼音字母是D",
"首字拼音字母是Z",
"总笔画数是13",
"总笔画数是11",
"首字拼音字母是G"
};
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String randomCode = getRandomCode();
String randomName = codeToNameMap.get(randomCode);
System.out.println("猜测以下这个人的名字:");
System.out.println(randomCode);
String guessCode = scanner.nextLine().toUpperCase();
while (!guessCode.equals(randomCode)) {
System.out.println("猜错了,请再猜一次。");
System.out.println("以下是一个提示:");
System.out.println(HINTS[new Random().nextInt(HINTS.length)]);
guessCode = scanner.nextLine().toUpperCase();
}
System.out.println("恭喜你,猜对了!这个人的名字是:" + randomName);
}
private static String getRandomCode() {
String[] codes = codeToNameMap.keySet().toArray(new String[0]);
return codes[new Random().nextInt(codes.length)];
}
}
```
这个程序先将代号和名字的对应关系存储在 `codeToNameMap` 中,然后随机选择一个代号(使用 `getRandomCode` 方法),让用户猜测对应的名字。如果用户猜错了,程序会随机选择一个提示(使用 `HINTS` 数组),然后要求用户再次猜测。如果用户猜对了,程序会输出正确的名字。
注意,程序中的提示信息是预先写死的,如果你需要更多的提示信息,可以自行添加到 `HINTS` 数组中。
阅读全文