gpt4 book ai didi

java - While 循环不起作用

转载 作者:行者123 更新时间:2023-12-01 19:56:17 25 4
gpt4 key购买 nike

我只是想要一些解释(为什么)以下代码不起作用以及使代码运行的解决方案(如何)。

该程序的目标是获取用户输入的扑克牌,J、Q、K、A、小写或大写。程序必须只接受这些值之一,因此需要验证用户输入,在错误时显示并提示,直到输入接受的值为止。然后,程序必须获取用户输入的值并将扑克牌的名称打印到控制台上:Jack、Queen、King、Ace。

package practical_1;

import static java.lang.System.out;
import java.util.Scanner;

public class Question_4 {
public static void main(String[] args) {

Scanner input = new Scanner(System.in);

String Usr_Card;
out.print("Enter Card Letter Here.... ");
Usr_Card = input.next();
Usr_Card = Usr_Card.toUpperCase();


while (Usr_Card != "K" || Usr_Card != "Q" || Usr_Card != "J" || Usr_Card != "A"){
out.print("Invalid Input\nEnter Valid Card Letter Here: ");
Usr_Card = input.next();
Usr_Card = Usr_Card.toUpperCase();
}

switch (Usr_Card) {
case ("J"):
out.print("Jack");
break;
case ("Q"):
out.print("Queen");
break;
case ("K"):
out.print("King");
break;
case ("A"):
out.print("Ace");
break;
}

}

}

最佳答案

或运算符||如果任何部分为 true,则返回 true。在您的示例中,如果卡不是 K 或不是 Q 或不是 J 或不是 A,则继续循环。

让我们来分解一下。用户输入“K”

Usr_Card != "K" // false
Usr_Card != "Q" // true
Usr_Card != "J" // true
Usr_Card != "A" // true

false || true || true || true === true // continue the loop

我们真正想要检查的是输入是否无效。当输入与 K、Q、J 或 A 中的至少一个不匹配时,输入无效。或者更好的说法是,当不是 K AND 不是 Q 、不是 J 和不是 A 时。

我们只需更改 || 的条件即可到 &&。相同的例子

Usr_Card != "K" // false
Usr_Card != "Q" // true
Usr_Card != "J" // true
Usr_Card != "A" // true

false && true && true && true === false // do not continue the loop

while (Usr_Card != "K" && Usr_Card != "Q" && Usr_Card != "J" && Usr_Card != "A")

让我们尝试一个无效的示例。使用输入“A”

Usr_Card != "K" // true
Usr_Card != "Q" // true
Usr_Card != "J" // true
Usr_Card != "A" // true

true && true && true && true === true // continue the loop

正如您所看到的,由于我们的 AND && 操作,我们仅在不匹配任何有效字符时才继续循环。

正如 Scary Wombat 所指出的,您不应该将 ==!= 与字符串一起使用。您应该使用 .equals

while( !Usr_Card.equals("K") && !Usr_Card.equals("Q") && !Usr_Card.equals("J") && !Usr_Card.equals("A") )

关于java - While 循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49642879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com