gpt4 book ai didi

java - 使用 While 循环将键盘上的用户输入与字符串进行比较

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

我在尝试让我的程序检测用户何时输入“Y”(表示"is")和“N”(表示“否”)时遇到问题。

这是代码...

import java.util.Scanner;

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

System.out.println("How Many Marks Was Your Practicals Out Of?");
Scanner scan = new Scanner (System.in);
int practicalsOutOf = scan.nextInt();

System.out.println("Okay And What Did You Get Out Of:" + " " + practicalsOutOf);
Scanner scan2 = new Scanner (System.in);
int whatYouGotInPracticals = scan.nextInt();

System.out.println("Okay so you got" + " " + whatYouGotInPracticals + "/" + practicalsOutOf + " " + "For Your Practicals Correct?");
scan.nextLine();


String answer = scan.nextLine();
while ( !"Y".equals(answer) || !"N".equals(answer)){
System.out.println("Please Type A Capital Y If Correct Or A Capital N If Incorrect");
scan.nextLine();
}
System.out.println("Thank You");


}
}

当我输入 Y 或 N 时,它没有将其识别为正确答案,程序继续运行,显示如下:

如果正确,请输入大写 Y,如果不正确,请输入大写 N

所以它没有退出循环?

如果我去掉 OR 比较并保留它,这样程序只寻找Y,如果我输入正确的答案,我可以让程序退出循环第一次,否则它将忽略正确答案并继续循环运行。

当我放回 OR 比较以便程序可以接受 Y 或 N 时,它不会接受其中任何一个,并将继续运行循环,即使我第一次输入正确的答案。

我真的看不出我在这里做错了什么。任何帮助都会很棒!

谢谢

最佳答案

你的while条件不好:

!"Y".equals(answer) || !"N".equals(answer)

意味着:

如果答案不是“Y”答案>不“N”您将继续。

由于 answer 永远不可能两者兼而有之(满足此条件的唯一方法),这将始终为真。

只需将 || 更改为 &&

是的,无需创建另一个相同的扫描仪。

编辑:为什么 && 有效:

!"Y".equals(answer) && !"N".equals(answer)

表示如果answer不是“Y”并且answer不是“N” 意味着用户给了我们一些既不是 "Y" 也不是 "N" 的字符串,在我们的例子中这是一个错误的输入,我们应该让他尝试一下再次。

请注意,当且仅当 answer"Y""N" 时,此条件为 false,这正是我们想要的.

编辑:

另一个问题是由于您从未在循环中分配answer(因此它将永远具有初始值muhahaha:)),请参阅下面是演示..

This: scan.nextLine(); 只是扫描并忽略返回值 this : answer = scan.nextLine(); 不会。

DEMO. DEMO2

关于java - 使用 While 循环将键盘上的用户输入与字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24475207/

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