0

我正在尝试使用 eclipse 在 Java 中制作 Black Jack 的简化版本。我试图让玩家输入“击中”或“站立”,虽然他们没有,但它一直在提示他们这样做。

while (hitorstand != ("hit") || hitorstand != ("stand"))
                {
                    System.out.println("Would you like to hit or stand?(1 for hit, 2 for stand)");
                    hitorstand = scan.nextLine();
                    hitorstand.toLowerCase();
                }       
                if (hitorstand.equals("hit"))
                    {
                        playercard3 = random.nextInt(10) +2;
                        System.out.println(""+playercard3);
                    }
                else if (hitorstand.equals("stand"))
                    {
                        System.out.println("You had a total value of " + playercardtotal + ".");
                        if (hiddendealercard == card2)

当我运行它时,无论我输入什么,它都无法逃脱 while 循环。我知道如果我使用数字会起作用,但我真的很想学习如何使用单词作为输入。

4

5 回答 5

4
while (hitorstand != ("hit") || hitorstand != ("stand")) // This is not the right way

使用equals()字符串值比较的方法。==用于对象参考比较。

while (!hitorstand.equals("hit") || !hitorstand.equals("stand")) // This is

我不确定你为什么要!=while循环条件中使用,而你在语句中正确地使用(hitorstand.equals("hit"))了 while 下面。if

while此外,循环块中似乎存在一个小错误。

hitorstand.toLowerCase(); // This does nothing

由于字符串在 Java 中是不可变的,因此您需要重新分配更改后的字符串才能看到更改

hitorstand = hitorstand.toLowerCase(); // Assigning back the lowercase string back to hitorstand 
于 2013-10-18T17:47:11.970 回答
2

您需要使用.equals(..)而不是==. 这是因为==用于引用相等,而.equals()仅用于值相等。

例如:

while(!hitorstand.equals("hit") || !hitorstand.equals("stand"))
于 2013-10-18T17:48:43.317 回答
0

比较 hitorstand != ("hit") 您实际上比较的是对象引用而不是 String 值本身。要比较字符串,您需要使用 equals 方法。在java中,每个类都继承equals(来自Object),并且可以覆盖它以进行自定义对象比较

尝试这个:

while (!hitorstand.equals("hit") || !hitorstand.equals("stand")){
于 2013-10-18T17:51:00.057 回答
0

你可以做到这一点的一种方法是使用一个角色。例如:
while (hitorstand != ("hit") || hitorstand != ("stand"))
您可以使用 charAt() 命令检查字符串中的第一个字符,而不是使用括号中的字符串索引。因此,由于您正在寻找第一个字符,它将位于索引 0。x
while (x != 'h' || x != 's')
是一个字符。

在你的while循环中,
System.out.println("Would you like to hit or stand?");
hitorstand = scan.nextLine();
hitorstand.toLowerCase();
x = x.charAt(0); // you would just add this line. This gets the character at index 0 from the string and stores it into x. So if you were to type hit, x would be equal to 'h'.

您的 if 语句可以保持不变,或者您也可以将条件更改为 (x == 'h') 和 (x == 's')。这取决于你。

于 2013-10-19T06:23:07.030 回答
0

除了答案之外,一个好的经验法则是将 .equals() 与字符串一起使用,将 == 与整数值或具有整数值(或 null 值)的变量一起使用。

于 2013-10-18T17:54:39.700 回答