Java If-else条件和逻辑运算符
这是我的代码,用于搜索调用多段线方法的2个位置。当我的编辑文本Tabaco-Malinao调用的方法与Tabaco Bacacay、Tabaco Santo Domingo、Tabaco Malipot完全相同。但是当我的编辑文本是Mallipot Santo Domingo,Santo Domingo Bacacay时,它总是要求第一个条件Tabaco Malinao,而不是他们自己的条件 可能是条件不对吗?或者我正在使用的逻辑运算符 我的理解是,它取的是先到的,而不是正确地取等号。这可能是错误的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,而不是他们自己的条件 可能是条件不对吗?或者我正在使用的逻辑运算符 我的理解是,它取的是先到的,而不是正确地取等号。这可能是错
当您按照第一个条件进入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 | |改成&=,但没有把==改成什么,这就是我犯的错误。因为我认为原点应该等于终点,我有点正确,等号==是问题所在。我试图将&&改为| |,但没有将==改为&。谢谢你为纠正我的错误所做的努力我有点正确,等号==是问题所在。我试图将&&改为| |,但没有将==改为&。谢谢你努力改正我的错误