我正在尝试制作哈利波特法术游戏

时间:2014-03-04 22:29:04

标签: java arrays

玩家应该从系列中输入一个咒语,如果它在数组中,计算机将在数组中输出一个不同的咒语。如果它不在数组内部,它将打印数组中的第一个咒语,依此类推。

我用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]);

2 个答案:

答案 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()来区分大小写。

祝你哈利波特游戏好运。希望很快就会有魔力!!!!