Reputation: 13
This is my code for searching a 2 places that call the method of the polyline
. When my editext
Tabaco - Malinao it's calling the method properly same as Tabaco-Bacacay, Tabaco-Santo Domingo, Tabaco-Malilipot. But when my edittext
is Malilipot-Santo Domingo, Santo Domingo-Bacacay it's always calling for the first condition (Tabaco-Malinao) not their own condition.
Could be the condition is wrong? or the logical operators that I'm using?
My understanding is that, it takes what comes first and not taking the equal sign correctly. This could be wrong.
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();
}
Upvotes: 1
Views: 115
Reputation: 434
here is the explanation why it's going in the 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
Upvotes: 0
Reputation: 17534
The logic is wrong, let's say that you have :
String origin = "Malilipot";
String destination = "Santo Domingo";
Then origin.equals("Tabaco")
is false
and destination.equals("Malinao")
is also false
.
So origin.equals("Tabaco") == destination.equals("Malinao")
yields false == false
which is true
, despite the fact that it absolutely doesn't match what you thought was your condition.
Refactor your code to only use &&
(AND) and ||
(OR) operators :
if (origin.equals("Tabaco") == destination.equals("Malinao") && origin.equals("Malinao") == destination.equals("Tabaco"))
Becomes
if ((origin.equals("Tabaco") && destination.equals("Malinao")) || (origin.equals("Malinao") && destination.equals("Tabaco")))
Upvotes: 3
Reputation: 5311
Change the condition like below ,in your case when you enter Malilipot-Santo Domingo as per first condition
if (origin.equals("Tabaco") == destination.equals("Malinao") && origin.equals("Malinao") == destination.equals("Tabaco"))
origin.equals("Tabaco") is false and destination.equals("Malinao") is also false then false == false it become true same for next condition
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();
}
Upvotes: 2