玩家应该从系列中输入一个咒语,如果它在数组中,计算机将在数组中输出一个不同的咒语。如果它不在数组内部,它将打印数组中的第一个咒语,依此类推。
我用4个法术测试了这个,但它总是输出“Crucio”。我不知道为什么会发生这种情况! 请帮忙。
这是我到目前为止所做的:
public class HarryPotterGame {
public static void main(String[] args) {
System.out.println("---------------------------------------");
System.out.println("Welcome to the Harry Potter Spell Game!");
System.out.println("---------------------------------------");
String[] Spells;
Spells = new String[] {"Accio","AvadaKedavra","Crucio","Imperio"};
System.out.println("Your turn. Do not use spaces!");
Scanner sn = new Scanner(System.in);
String Spell1 = sn.nextLine();
int i = 0;
while(Spells[i] != Spell1){
if (i == 4){
System.out.println("Accio");
}
i++;
break;
}
System.out.println(Spells[i+1]);
答案 0 :(得分:7)
使用equals method比较字符串
while(!Spells[i].equals(Spell1)){
答案 1 :(得分:1)
==
(或!=
)运算符将无法工作,因为它将比较内存中相应字符串的引用。如果它们两个字符串都指向相同的位置,那么它只会起作用。
所以如果你有2个字符串
String s1 = "s1";
String s2 = "s1";
s1 == s2
将为FALSE
但是,如果您有2个字符串引用,如
String s1 = "s1";
String s2 = s1;
s1 == s2
将为TRUE
因此,比较两个字符串的最佳方法是使用equals()方法。这将比较字符串的内容。
将您的条件更改为
while(!Spells[i].equals(Spell1)){
更准确地使用equalsIgnoreCase()
来区分大小写。
祝你哈利波特游戏好运。希望很快就会有魔力!!!!