【问题标题】:If else condition and logical operatorsif else 条件和逻辑运算符
【发布时间】:2018-02-21 13:31:02
【问题描述】:

这是我用于搜索调用polyline 方法的两个地方的代码。当我的editext Tabaco - Malinao 调用该方法时,它与 Tabaco-Bacacay、Tabaco-Santo Domingo、Tabaco-Malilipot 的方法相同。但是当我的edittextMalilipot-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();
}

【问题讨论】:

  • 为什么每个花蕊都用&&连接?你想使用逻辑或 || 吗?
  • 我已尝试将 && 更改为 ||而不是将 == 更改为某些东西,这就是我犯错误的地方。因为我认为原点应该等于目的地

标签: java android if-statement logical-operators


【解决方案1】:

逻辑错了,假设你有:

String origin = "Malilipot";

String destination = "Santo Domingo";

那么origin.equals("Tabaco")就是false destination.equals("Malinao") 也是 false

所以origin.equals("Tabaco") == destination.equals("Malinao") 产生false == falsetrue,尽管它绝对不符合您认为的条件。

重构您的代码以仅使用 && (AND) 和 || (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"))) 

【讨论】:

  • 我有点正确,等号(“==”)是问题所在。我试图将 && 更改为 ||但不将 == 更改为 &&。感谢您努力纠正我的错误
【解决方案2】:

改变如下条件,在你的情况下,当你按照第一个条件输入 Malilipot-Santo Domingo

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

origin.equals("Tabaco") 是假的,destination.equals("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();
    }

【讨论】:

    【解决方案3】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      相关资源
      最近更新 更多