Java 使用while循环验证输入
我想让用户只输入“y”、“y”、“n”或“n”。结果代码要求用户在输入正确的输入时输入Y或N,这与我所期望的相反!在输入前面。EqualCaseIgnore(输入)Java 使用while循环验证输入,java,validation,input,Java,Validation,Input,我想让用户只输入“y”、“y”、“n”或“n”。结果代码要求用户在输入正确的输入时输入Y或N,这与我所期望的相反!在输入前面。EqualCaseIgnore(输入) 这是您的或条件,您必须将其更改为和 while (!Input.equalsIgnoreCase("Y") && !Input.equalsIgnoreCase("N")) 大声朗读有助于理解逻辑: 输入不等于(忽略大小写)“Y”和输入不等于(忽略大小写)“N”这是您的或条件,您必须将其更改为和 while (!
这是您的
或
条件,您必须将其更改为和
while (!Input.equalsIgnoreCase("Y") && !Input.equalsIgnoreCase("N"))
大声朗读有助于理解逻辑:
输入不等于(忽略大小写)“Y”和输入不等于(忽略大小写)“N”这是您的
或
条件,您必须将其更改为和
while (!Input.equalsIgnoreCase("Y") && !Input.equalsIgnoreCase("N"))
大声朗读有助于理解逻辑:
虽然输入不等于(忽略大小写)“Y”和输入不等于(忽略大小写)“N”我的代码逻辑不可靠,但我相信问题出在| |操作数上
其中一个答案总是错误的,因此它无法正确进入循环。我的代码逻辑已经生锈,但我相信问题出在| |操作数上
其中一个答案总是错误的,因此它不会正确地进入循环。你的布尔逻辑就是让你在这里死里逃生的原因
while (!Input.equalsIgnoreCase("Y") || !Input.equalsIgnoreCase("N"))
当输入不是Y而不是N时,您希望处于循环中,因此需要将其更改为
while (!Input.equalsIgnoreCase("Y") && !Input.equalsIgnoreCase("N"))
你的布尔逻辑让你在这里丧命
while (!Input.equalsIgnoreCase("Y") || !Input.equalsIgnoreCase("N"))
当输入不是Y而不是N时,您希望处于循环中,因此需要将其更改为
while (!Input.equalsIgnoreCase("Y") && !Input.equalsIgnoreCase("N"))
要详细说明@gtgaxiola的答案:
!Input.equalsIgnoreCase("Y") || !Input.equalsIgnoreCase("N")
假设输入
为“Y”
。|
的左操作数是false
,因为Input
等于“Y”
。但是右操作数是true
,因为Input
不等于“N”
。而false | | | true
是true
,因为每当任一操作数为true
时,|
的结果都是true
。事实上,无论输入是什么,这个表达式总是true
这就是为什么需要使用&&
:
!Input.equalsIgnoreCase("Y") && !Input.equalsIgnoreCase("N")
因为您希望结果为true
仅当两个equalsIgnoreCase
调用都返回false
时
或者,你可以说
! (Input.equalsIgnoreCase("Y") || Input.equalsIgnoreCase("N"))
另请参见关于的这篇文章
(顺便说一句,Java中的惯例是使用以小写字母开头的名称作为变量,即
输入
)详细说明@gtgaxiola的答案:
!Input.equalsIgnoreCase("Y") || !Input.equalsIgnoreCase("N")
假设输入
为“Y”
。|
的左操作数是false
,因为Input
等于“Y”
。但是右操作数是true
,因为Input
不等于“N”
。而false | | | true
是true
,因为每当任一操作数为true
时,|
的结果都是true
。事实上,无论输入是什么,这个表达式总是true
这就是为什么需要使用&&
:
!Input.equalsIgnoreCase("Y") && !Input.equalsIgnoreCase("N")
因为您希望结果为true
仅当两个equalsIgnoreCase
调用都返回false
时
或者,你可以说
! (Input.equalsIgnoreCase("Y") || Input.equalsIgnoreCase("N"))
另请参见关于的这篇文章
(顺便说一句,Java中的惯例是使用以小写字母开头的名称作为变量,即
input
)以下是跟踪代码的好工具:
以下是跟踪代码的绝佳工具:
问题是如果用户输入N,那么!如果用户输入Y,那么!equalsIgnoreCase(“N”)变为真,所以它总是进入内部,而问题是,若用户输入N,那个么!如果用户输入Y,那么!equalsIgnoreCase(“N”)变为真,所以它总是进入while的内部