Ich arbeite an einem Programm, bei dem der Wert eines arrays mit einem eingelesenen Wert verglichen wird. Es handelt sich bei beiden Werten um Strings.
Die fragliche Stelle sieht ungefähr so aus:
Komischerweise ist die Bedingung niemals wahr, obwohl staedte[0][0] und stadt1 denselben Wert haben (System.out.println(staedte[0][0]) und System.out.println(staedt1) liefern diesselbe Ausgabe...). Wie kommt das und wie kann ich das ändern?
edit: Hier doch das komplette Programm, das Meiste ist für die Frage irrelevant und eigentlich sind nur die Stellen wichtig, bei denen ich eine Notiz gemacht habe.
Die fragliche Stelle sieht ungefähr so aus:
Java:
if (staedte[0][0] == stadt1) {System.out.println("wahr");}
Komischerweise ist die Bedingung niemals wahr, obwohl staedte[0][0] und stadt1 denselben Wert haben (System.out.println(staedte[0][0]) und System.out.println(staedt1) liefern diesselbe Ausgabe...). Wie kommt das und wie kann ich das ändern?
edit: Hier doch das komplette Programm, das Meiste ist für die Frage irrelevant und eigentlich sind nur die Stellen wichtig, bei denen ich eine Notiz gemacht habe.
Java:
public class Navigator {
public static void main(String[] args) {
int as = IO.readInt("Anzahl Städte: ");
String[][] staedte = new String[as][as];
for (int i = 0; i < staedte.length; i++) {
//Stadtname wird definiert
staedte[i][0] = IO.readString("Stadtname: ");
}
int direkt = IO.readInt("Anzahl Direktverbindungen: ");
for (int i = 0; i < direkt; i++) {
//Stadtname wird definiert
String stadt1 = IO.readString("Stadt 1: ");
String stadt2 = IO.readString("Stadt 2: ");
for (int x = 0; x < staedte.length; x++) {
//Stadtnamen werden verglichen -- liefert niemals true. Warum?1
if (stadt1 == staedte[x][0]) {
int j = 1;
while (true) {
if (staedte[x][j] == null) {
staedte[x][j] = stadt2;
break;
}
j++;
}
}
}
}
}
}
Zuletzt bearbeitet: