Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java If-else条件和逻辑运算符_Java_Android_If Statement_Logical Operators - Fatal编程技术网

Java If-else条件和逻辑运算符

Java If-else条件和逻辑运算符,java,android,if-statement,logical-operators,Java,Android,If Statement,Logical Operators,这是我的代码,用于搜索调用多段线方法的2个位置。当我的编辑文本Tabaco-Malinao调用的方法与Tabaco Bacacay、Tabaco Santo Domingo、Tabaco Malipot完全相同。但是当我的编辑文本是Mallipot Santo Domingo,Santo Domingo Bacacay时,它总是要求第一个条件Tabaco Malinao,而不是他们自己的条件 可能是条件不对吗?或者我正在使用的逻辑运算符 我的理解是,它取的是先到的,而不是正确地取等号。这可能是错

这是我的代码,用于搜索调用多段线方法的2个位置。当我的编辑文本Tabaco-Malinao调用的方法与Tabaco Bacacay、Tabaco Santo Domingo、Tabaco Malipot完全相同。但是当我的编辑文本是Mallipot Santo Domingo,Santo Domingo Bacacay时,它总是要求第一个条件Tabaco Malinao,而不是他们自己的条件

可能是条件不对吗?或者我正在使用的逻辑运算符

我的理解是,它取的是先到的,而不是正确地取等号。这可能是错误的


当您按照第一个条件进入Malipot Santo Domingo时,更改如下条件

如果origin.equalsTabaco==destination.equalsMalinao&&origin.equalsMalinao==destination.equalsTabaco

origin.equalsTabaco为false,destination.equalsMalinao也为false,然后false==false下一个条件变为true


当您按照第一个条件进入Malipot Santo Domingo时,更改如下条件

如果origin.equalsTabaco==destination.equalsMalinao&&origin.equalsMalinao==destination.equalsTabaco

origin.equalsTabaco为false,destination.equalsMalinao也为false,然后false==false下一个条件变为true


逻辑是错误的,假设你有:

String origin = "Malilipot";

String destination = "Santo Domingo";
那么origin.equalsTabaco是假的 destination.equalsMalinao也是假的

因此origin.equalsTabaco==destination.equalsMalinao生成false==false,这是真的,尽管它与您认为的条件完全不匹配

重构代码以仅使用&&和| |或运算符:

if (origin.equals("Tabaco") == destination.equals("Malinao") && origin.equals("Malinao") == destination.equals("Tabaco")) 
变成

if ((origin.equals("Tabaco") && destination.equals("Malinao")) || (origin.equals("Malinao") && destination.equals("Tabaco"))) 

逻辑是错误的,假设你有:

String origin = "Malilipot";

String destination = "Santo Domingo";
那么origin.equalsTabaco是假的 destination.equalsMalinao也是假的

因此origin.equalsTabaco==destination.equalsMalinao生成false==false,这是真的,尽管它与您认为的条件完全不匹配

重构代码以仅使用&&和| |或运算符:

if (origin.equals("Tabaco") == destination.equals("Malinao") && origin.equals("Malinao") == destination.equals("Tabaco")) 
变成

if ((origin.equals("Tabaco") && destination.equals("Malinao")) || (origin.equals("Malinao") && destination.equals("Tabaco"))) 

这是为什么它会在第一种情况下运行的解释

String origin = "Malilipot";
    String destination = "Santo Domingo";
    if(origin.equals("Tabaco") == destination.equals("Malinao") && origin.equals("Malinao") == destination.equals("Tabaco"))

    origin.equals("Tabaco")  = false
    destination.equals("Malinao") = false
    origin.equals("Tabaco") == destination.equals("Malinao")
            false           ==      false 
            result will be  = true

    origin.equals("Malinao")  = false
    destination.equals("Tabaco") = false

    origin.equals("Malinao") == destination.equals("Tabaco")
                    false    ==       false

            result will be = true


    at your last condition will be if (true == true)
            it will be : true


    thats why its going in first condition

这是为什么它会在第一种情况下运行的解释

String origin = "Malilipot";
    String destination = "Santo Domingo";
    if(origin.equals("Tabaco") == destination.equals("Malinao") && origin.equals("Malinao") == destination.equals("Tabaco"))

    origin.equals("Tabaco")  = false
    destination.equals("Malinao") = false
    origin.equals("Tabaco") == destination.equals("Malinao")
            false           ==      false 
            result will be  = true

    origin.equals("Malinao")  = false
    destination.equals("Tabaco") = false

    origin.equals("Malinao") == destination.equals("Tabaco")
                    false    ==       false

            result will be = true


    at your last condition will be if (true == true)
            it will be : true


    thats why its going in first condition

为什么要将每个stamenet与&&连接起来?你想用逻辑Or | | |吗?我试过把&&to | |改成&=,但没有把==改成什么,这就是我犯的错误。因为我认为起源应该等于目的为什么你要把每一个stamenet都和&&联系起来?你想用逻辑Or | | |吗?我试过把&&to | |改成&=,但没有把==改成什么,这就是我犯的错误。因为我认为原点应该等于终点,我有点正确,等号==是问题所在。我试图将&&改为| |,但没有将==改为&。谢谢你为纠正我的错误所做的努力我有点正确,等号==是问题所在。我试图将&&改为| |,但没有将==改为&。谢谢你努力改正我的错误