我有一个应该包含Y,y,n或N字符的char变量,我想测试它是否不包含它,然后显示错误消息并退出程序。

这是我正在使用的代码;

    if (userDecision != 'Y' || userDecision != 'y' || userDecision != 'n' || userDecision != 'N')
        {
            System.out.println("Error: invalid input entered for the interstate question");
            System.exit(0);
        }


无论变量中有什么,它总是返回true并执行命令以退出程序,我在做什么错呢?

最佳答案

||表示逻辑或。您要改为&&

if (userDecision != 'Y' && userDecision != 'y' ...




如果a或b为true,则a || b返回true。假设userDecision'Y'。然后


userDecision != 'Y'为假
userDecision != 'y'是真的
userDecision != 'N'是真的
userDecision != 'n'是真的


因此,条件均为true,并且执行了if分支。

OTOH,如果a和b均为true,则a && b返回true,这是您真正需要的。

08-25 06:30