如果其他条件和逻辑操作员



这是我搜索称为polyline方法的2个位置的代码。当我的editext TABACO-MALINAO 它调用与 tabaco-bacacay,Tabaco-Santo Domingo,Tabaco-Malilipot 的方法正确相同。但是,当我的edittext Malilipot-Santo Domingo时,Santo domingo-bacacay 始终要求第一个条件(Tabaco-Malinao(不是他们自己的条件。

可能是条件错了吗?还是我正在使用的逻辑运算符?

我的理解是,它首先要出现,而不是正确地签名。这可能是错误的

String origin = etOrigin.getText().toString();
    String destination = etDestination.getText().toString();
            if (origin.equals("Tabaco") == destination.equals("Malinao") && origin.equals("Malinao") == destination.equals("Tabaco")) {
            ttom();
            Toast.makeText(getApplicationContext(), "tabaco malinao", Toast.LENGTH_SHORT).show();
        } else if (origin.equals("Tabaco") == destination.equals("Bacacay") && origin.equals("Bacacay") == destination.equals("Tabaco")) {
            ttob();
            Toast.makeText(getApplicationContext(), "tabaco bacacay", Toast.LENGTH_SHORT).show();
        } else if (origin.equals("Tabaco") == destination.equals("Santo Domingo") && origin.equals("Santo Domingo") == destination.equals("Tabaco")) {
            ttosto();
            Toast.makeText(getApplicationContext(), "tabaco sto domingo", Toast.LENGTH_SHORT).show();
        } else if (origin.equals("Tabaco") == destination.equals("Malilipot") && origin.equals("Malilipot") == destination.equals("Tabaco")) {
            ttomali();
            Toast.makeText(getApplicationContext(), "tabaco malilipot", Toast.LENGTH_SHORT).show();
        } else if (origin.equals("Malilipot") == destination.equals("Santo Domingo") && origin.equals("Santo Domingo") == destination.equals("Malilipot")) {
            malitosto();
            Toast.makeText(getApplicationContext(), "malilipot sto domingo", Toast.LENGTH_SHORT).show();
        } else if (origin.equals("Malilipot") == destination.equals("Bacacay") && origin.equals("Bacacay") == destination.equals("Malilipot")) {
            malitobac();
            Toast.makeText(getApplicationContext(), "malilipot bacacay", Toast.LENGTH_SHORT).show();
        } else if (origin.equals("Santo Domingo") == destination.equals("Bacacay") && origin.equals("Bacacay") == destination.equals("Santo Domingo")) {
            bactosto();
            Toast.makeText(getApplicationContext(), "sto domingo bacacay", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "Invalid input!", Toast.LENGTH_SHORT).show();
}

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

String origin = "Malilipot";
String destination = "Santo Domingo";

然后 origin.equals("Tabaco")falsedestination.equals("Malinao")也是false

因此,origin.equals("Tabaco") == destination.equals("Malinao")产生的false == falsetrue,尽管它绝对与您认为的状况不符。

重构代码仅使用&&(和(和||(OR(操作员:

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"))) 

在您输入 Malilipot-Santo Domingo 的情况下,请更改下面的条件

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

onequ.equals(" tabaco"(是false。

String origin = etOrigin.getText().toString();
        String destination = etDestination.getText().toString();
                if ((origin.equals("Tabaco") && destination.equals("Malinao")) ||( origin.equals("Malinao") == destination.equals("Tabaco"))) {
                ttom();
                Toast.makeText(getApplicationContext(), "tabaco malinao", Toast.LENGTH_SHORT).show();
            } else if ((origin.equals("Tabaco") && destination.equals("Bacacay")) || ( origin.equals("Bacacay") && destination.equals("Tabaco"))) {
                ttob();
                Toast.makeText(getApplicationContext(), "tabaco bacacay", Toast.LENGTH_SHORT).show();
            } else if ((origin.equals("Tabaco") && destination.equals("Santo Domingo")) ||( origin.equals("Santo Domingo") && destination.equals("Tabaco")) ){
                ttosto();
                Toast.makeText(getApplicationContext(), "tabaco sto domingo", Toast.LENGTH_SHORT).show();
            } else if ((origin.equals("Tabaco") && destination.equals("Malilipot") )||( origin.equals("Malilipot") && destination.equals("Tabaco"))) {
                ttomali();
                Toast.makeText(getApplicationContext(), "tabaco malilipot", Toast.LENGTH_SHORT).show();
            } else if ((origin.equals("Malilipot") && destination.equals("Santo Domingo") )||( origin.equals("Santo Domingo") && destination.equals("Malilipot"))){
                malitosto();
                Toast.makeText(getApplicationContext(), "malilipot sto domingo", Toast.LENGTH_SHORT).show();
            } else if ((origin.equals("Malilipot") && destination.equals("Bacacay")) ||( origin.equals("Bacacay") && destination.equals("Malilipot"))) {
                malitobac();
                Toast.makeText(getApplicationContext(), "malilipot bacacay", Toast.LENGTH_SHORT).show();
            } else if (origin.equals("Santo Domingo") && destination.equals("Bacacay") )||( origin.equals("Bacacay") && destination.equals("Santo Domingo"))) {
                bactosto();
                Toast.makeText(getApplicationContext(), "sto domingo bacacay", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "Invalid input!", Toast.LENGTH_SHORT).show();
    }

这是为什么它在第一个条件下进行的解释...

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

最新更新