Guten Abend,
ich soll einen String in einem String-Array suchen. Es sollen mehrere Wörter eingegeben und diese in dem Feld gespeichert werden. Anschließend wird ein weiteres Wort eingegeben und es soll gezählt werden, wie oft dieses Wort vorkommt. Dabei dürfen keine String-Methoden benutzt werden.
Das Zählen habe ich noch nicht implementiert, da anscheinend die eingegebenen Strings nicht richtig verglichen/übergeben werden. Dies sollte eigentlich über die methode inhalt geschehen. Im Moment wird also false ausgegeben, obwohl es eigentlich true sein sollte.
Hat jemand eine Idee, woran das liegt? MfG
Code:
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String [] wortliste = new String [5];
for (int i=0;i<wortliste.length;i++) {
System.out.print("Bitte das " + i + ". Wort eingeben: ");
wortliste[i]=s.nextLine();
}
System.out.println("Bitte das gesuchte Wort eingeben: ");
String gesuchtesWort = s.nextLine();
System.out.println(inhalt(wortliste, gesuchtesWort));
s.close();
}
public static boolean inhalt(String [] wortliste, String gesuchtesWort) {
for (String i: wortliste) {
if (gesuchtesWort == i) {
return true;
}
}
return false;
}
Ist charAt nicht auch eine Methode zum Vergleichen? Es dürfen keine String-Methoden zum Vergleichen und Zusammensetzen von Teil-Strings verwendet werden.
charAt extrahiert nur ein Zeichen aus dem String, dient also weder direkt zum Zusammensetzen noch zum Vergleichen. Der Vergleich passiert ja dann wieder mit ==.
Wie funktioniert das dann, wenn mehrere Wörter hintereinander stehen und eins rausgesucht werden soll? Bin gerade am verzweifeln. Es sieht im Moment folgendermaßen aus.
Code:
int vorkommen = 0;
for (int x = 0; x < gesuchtesWort.length(); x++) {
for (int ziffer = 0; ziffer < wortliste.length; ziffer++) {
if (wortliste[x].charAt(ziffer) == gesuchtesWort.charAt(x))
vorkommen++;
}
}
return vorkommen;
wortliste ist die Liste aller Wörter (String-Array). gesuchtesWort ist eben das gesuchte Wort.
Ich bringe hier glaube ich gerade einige Dinge durcheinander.
Die ArrayList wäre sicherlich eine Alternative, aber ich weiß nicht ob dies so unbedingt erwünscht ist.
Also am sinnvollsten ist es mit s1.equals(s2); == funktioniert jedenfalls nicht richtig da bei Objekten Referenzen verglichen werden. Oder mit s1.charAt(index); wie schon gesagt wurde, die nächste Möglichkeit ist den Strings in char Arrays umzuwandeln und diese elementweise zu vergleichen. Ganz ohne String Methoden kommst du hier nicht weiter!