当输入“y”或“Y”时,我希望代码从第一个System.out.print("Y/y or N/n: ");
开始提示do
,但代码会提示System.out.print("bad answer, try again: ");
,而我除了y,Y,n,N之外,只需要char。
接下来唯一的代码是在System.exit(0);
之后输入'n'或'N'
import java.util.Scanner;
public class Test
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
char ch;
do
{
System.out.print("Y/y or N/n: ");
do
{
ch = kb.nextLine().charAt(0);
if (ch == 'n' || ch == 'N')
{
System.exit(0);
}
else if (ch != 'y' || ch != 'Y' || ch != 'n' || ch != 'N');
{
System.out.print("bad answer, try again: ");
}
}
while (ch != 'y' || ch != 'Y' || ch != 'n' || ch != 'N');
}
while (ch == 'y' || ch == 'Y');
}
}
答案 0 :(得分:2)
因为你使用的是OR而不是AND,所以这种情况总是如此:
else if (ch != 'y' || ch != 'Y' || ch != 'n' || ch != 'N')
{
System.out.print("bad answer, try again: ");
}
顺便说一句,你可以简化这个以便有一个do-while。如果答案很糟糕,那就继续进行外循环的下一次迭代。
答案 1 :(得分:1)
删除分号并检查ch并取出AND。 代码可能是这样的:
else if (ch != 'y' && ch != 'Y' && ch != 'n' && ch != 'N')
{
System.out.print("bad answer, try again: ");
}
或强>
删除分号并检查ch并取OR,最后取NOT。 代码可能是这样的:
else if (!(ch == 'y' || ch == 'Y' || ch == 'n' || ch == 'N'))
{
System.out.print("bad answer, try again: ");
}