Java:如果语句中有两个或多个条件,if语句将不起作用吗?

问题描述 投票:0回答:2

可能有一个明显的答案。可能已经有人问过这个问题,但我不知道该如何措辞。我正在使用Java,目前,我正在从命令行读取输入文本,并将这些内容转换为字符串。

我确定是在命令行中输入x字符,以及是否将代码设置为

!(first.equals("x")) or (first.equals("x"))

我仍然得到system.out输出文本。我注意到,如果删除||,下面的等号代码段按预期工作,并继续执行代码。但是,对于第一个arg字符串,我必须选择x或y作为选项。有人可以让我知道我在做什么错。谢谢。

这是代码段:

private something(String[] args) 
{       
    first = args[0];
    second = args[1];
    third = args[2];

    if (!(first.equals("x")) || !(first.equals("y")))
    {           
        System.out.println("First is the problem " + first);
    }
}

这里是输出:

First is the problem x

编辑:我也这样做并且得到了相同的结果:

if (first.equals("x") == false || first.equals("y") == false)
    {
        System.out.println("First is the problem " + first);
    }

我正在使用此if语句作为是否输入两个值的检查。如果不是,则触发if语句。

当我有这样的时候它可以工作,但是我最终失去了y:

if (first.equals("x") == false)
    {
        System.out.println("First is the problem " + first);
    }
java string if-statement operators equals
2个回答
0
投票

first不是NOT“ x”或不是“ y”。无论设置了什么字符串[[first,始终都是如此。

=>您不是共和党人还是民主人士? ;)

0
投票
此代码似乎有效。如果if等于args[0]x,则y语句返回true。 !(first.equals("x"))表示除"x"以外的所有字符串都适用,因此这与您想要的相反。另外,您需要定义firstsecondthird,否则它将无法编译。

编辑:查看您的编辑,看来问题是由||引起的。由于这意味着“或”,因此,如果要运行if语句,则first不必等于xy。因此,由于它不能一次等于两个,因此if语句将始终运行。您应该改用&&(and)。另外,请注意,可以将== false替换为!

例如:

if (!(first.equals("x")) && !(first.equals("y"))) { System.out.println("First is the problem " + first); }

© www.soinside.com 2019 - 2024. All rights reserved.