JAVA求助 一个关于英文猜字谜的小游戏编程

2025-04-27 04:06:13
推荐回答(1个)
回答1:

我想了个简单的思路1.既然是单词是否有相同顺序的字母..分解来看 就是2个字母组合是最小的 所以把s1 和 s2 分解成 两个字母的顺序组合就可以了.2.然后比较分解出来的 2个字母组合数组或者集合 有相同的2个字母组合 就返回true 比如: slient 我把它分成==> sl li ie en nt listen ==> li is st te en然后遍历比较 只要 里面有一个 是相同的就跳出======================================import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class riddle {public static boolean isAnagram(String s1,String s2){
boolean flag = false;
List s1list = new ArrayList();
for (int i = 0; i < s1.length()-1; i++) {
s1list.add(s1.substring(i, i+2));
}

List s2list = new ArrayList();
for (int j = 0; j < s2.length()-1; j++) {
s2list.add(s2.substring(j, j+2));
}

for (int i = 0; i < s1list.size(); i++) {
String temp = s1list.get(i);
for (int j = 0; j < s2list.size(); j++) {
String temp2 = s2list.get(j);
if (temp.equals(temp2)) {
flag = true;
break;
}
}
}

return flag;
}

public static void main(String[] args) {

Scanner in = new Scanner(System.in);
System.out.println("请输入第1个单词:");
String s1 = in.next();
System.out.println("请输入第2个单词:");
String s2 = in.next();
boolean result = riddle.isAnagram(s1, s2);
if (result) {
System.out.println("这是个谜语");
}else{
System.out.println("不是谜语");
}
}
} ==========================================运行结果==========================================请输入第1个单词:
slient
请输入第2个单词:
listen
这是个谜语
==========================================对于只输入i和li 或者是 i i 这样的 也是会判断为false我在数组截取那里 做了判断..所以如果是1个字符 是不截取的..所以不会比较不过整体没有优化..应该能优化一下...思路大概就这样