[Java] wie "if(String==array[x][y])" machen?

Diskutiere [Java] wie "if(String==array[x][y])" machen? im Programmierung Forum im Bereich Programmierung; Hi! Ich bastle mir zurzeit in Java ein kleines Übersetzungsprogramm. Habe ein "wb.txt" mit ca 40 Wörtern deutsch<>englisch. Nun will ich in einer...
#1
oele3110

oele3110

Threadstarter
Dabei seit
17.08.2004
Beiträge
1.152
Alter
30
Ort
Falkensee
Hi!

Ich bastle mir zurzeit in Java ein kleines Übersetzungsprogramm.
Habe ein "wb.txt" mit ca 40 Wörtern deutsch<>englisch.
Nun will ich in einer IF-Abfrage prüfen, ob der eingebenen String (ist zurzeit nur ein Wort, soll später ein Satz werden) gleich dem Array-Inhalt ist:
Das ist meine Methode
Code:
static void translate() {
    eingabetext = eingabetext.toLowerCase();
    System.out.println(eingabetext);
    for (int x = 0; x <= zaehler; x++) {
      if (eingabetext==wb[x][0]) {
        uebertext = wb[x][1];
      }
    }
    System.out.println("Der neue Text: " + uebertext);
  }
"eingabetext" ist der String, der vorher eingelesen wurde.
Dann soll die Schleife durchrattern. "zaehler" ist dabei die Anzahl der Einträge.
Das array wb[x][0] enthält die Wörter (wb[x][0] deutsch, wb[x][1] englisch).
Nun kommt wenn ich das Prog ausführe immer die folgende Fehlermeldung in der Console:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 40
at wbuch.translate(wbuch.java:116)
at wbuch.main(wbuch.java:28)
Zeile 116 ist im Programm die IF-Abfrage.
Wie kann ich dieses Problem nun lösen, sodass er den "eingabetext" mit den Array-Inhalten vergleicht?

Vielen Dank!!

MFG Oele
 
#2
BrandyJr

BrandyJr

Dabei seit
02.11.2003
Beiträge
3.707
Alter
37
Ort
Berlin
Kannst du die Elemente des Arrays "per Hand" ansprechen?
Welchen Wert enthält die Variable zaehler?

Probier mal als for-schleife:
for (int x = 0; x < wb.length; x++) {
...
}
Kann sein, dass dein zaehler einfach zu weit zählt. ;)
 
#3
D

dlonra

Dabei seit
19.10.2005
Beiträge
1.149
Hi,

ich glaub so geht das mit dem if nicht,
da so die String-Referenzen verglichen werden.
Damit man aus der Schleife rauskommt noch das hallo. :)

probier mal:

Code:
bool hallo=false;
for (int x = 0; x < zaehler && hallo==false; x++)
 {
   if(eingabetext.equals(wb[x][0])
     { hallo=true;
       ...
     }
 }
Grüsse
 
Zuletzt bearbeitet:
#4
BrandyJr

BrandyJr

Dabei seit
02.11.2003
Beiträge
3.707
Alter
37
Ort
Berlin
ich glaub so geht das mit dem if nicht,
da so die String-Referenzen verglichen werden.
Ja, das dachte ich auch... zumindest hatten wir das in der FH so gelernt (da bin ich mir zu 95% sicher)
Also hab ich das hier einfach mal ausprobiert und siehe da, hat funktioniert. :blink

Allerdings ist diese Art des Vergleichs für ein Übersetzungsprogramm nicht wirklich geeignet, da deine beiden Wörter ja zu 100% übereinstimmen müssen.
Ich würd das eher so machen:
Code:
static void translate() {
	eingabetext = eingabetext.toLowerCase();
	System.out.println(eingabetext);
	for (int x = 0; x < wb.length; x++) {
	    if (wb[x][0].indexOf(eingabetext) != -1) {
	        uebertext = wb[x][1];
	    }
	    System.out.println("Der neue Text: " + uebertext);
	}
}
Dann muss der eingabetext nur irgendwo in wb[x][0] enthalten sein.
 
#5
D

dlonra

Dabei seit
19.10.2005
Beiträge
1.149
Hi BrandyJr,

ich komm eher aus der c++ Ecke.
Hab mal ein Java Grundkursbuch (Markt+Technik) durch gemacht.
Da war der JBuilder6 dabei, wenn man da z.B eine Variable schreibt und ein
Punkt setzt kommen automatisch die Hilfe. Ich kenne das nur so, dann hat
man eine Auswahl an Funktionen die die Klasse bietet. Wie hier z.B die String-Klasse. Wenn man nicht weis was die ausgewählte Funktion macht drückt man F1.
C++ unterscheidet sich nicht sehr von Java (vom Syntax her).

Ganz ehrlich hab ich nur schnell im Internet geschaut: string vergleich java :D


Grüsse

*edit* hier gibts eine Methoden Auswahl
http://www.dpunkt.de/java/Referenz/Das_Paket_java.lang/68.html

IndexOf
equals
und noch mehr

Deine Funktion sagt richtig wen das stimmt
Schneeman == Schnee
meine nicht

Die könnte auch interessant sein

equalsIgnoreCase

1000 Wege führen zum Ziel :)
 
Zuletzt bearbeitet:
#6
oele3110

oele3110

Threadstarter
Dabei seit
17.08.2004
Beiträge
1.152
Alter
30
Ort
Falkensee
Hi!!!

Vielen Dank! Der Tip von BrandyJr hat wunderbar geklappt!!!

Noch eine Frage:

Ist es irgendwie möglich in einem String die Wörter zu zählen? (Aber ich glaube das geht nicht). Ich würde den String zerhacken und die Leerzeichen zählen, oder habt ihr eine andere Idee?

Danke !!

MFG Oele
 
#7
D

dlonra

Dabei seit
19.10.2005
Beiträge
1.149
Hi,

ich hab hier kein Java :)
kannst mal dieses hier ausprobieren :unsure

Code:
int anzahl = hallo.length; //hallo ist dein Satz
int leer    = 0;

for(int x=0; x<anzahl; x++)
 {
  if(hallo.toCharArray()[x]==' ') leer=leer+1; //' ' Leerzeichen oder ASCII
                                                          // vom Leerzeichen
 }
Grüsse
 
#8
BrandyJr

BrandyJr

Dabei seit
02.11.2003
Beiträge
3.707
Alter
37
Ort
Berlin
Nein, gibt da IMHO keine wirklich "effektive" Methode für.
Musst nur bedenken, das es mehrere Leerzeichen hintereinander geben kann.
Also ist die Idee mit dem Zählen der Leerzeichen nicht sone gute Idee.
Code:
String var = "mein    string der hat 3   ecken und neun 	wörter";
int zaehlvar = 0;
boolean foundSpace = false;
for (int i=0; i<var.length(); i++) {
	if (Character.isLetterOrDigit(var.charAt(i)) && !foundSpace) {
		foundSpace = true;
		zaehlvar++;
	} else if (Character.isWhitespace(var.charAt(i)) && foundSpace)	{
		foundSpace = false;
	}
}
System.out.println("String enthält " + zaehlvar + " Wörter");
 
Thema:

[Java] wie "if(String==array[x][y])" machen?

Sucheingaben

content

,

if string array java

[Java] wie "if(String==array[x][y])" machen? - Ähnliche Themen

  • Java Script Fehler bei (erneuter) Aktivierung von Windows 7

    Java Script Fehler bei (erneuter) Aktivierung von Windows 7: Habe versucht Windows per Telefon sowie mit Internet Explorer, Firefox und Chrome zu aktivieren doch es funktioniert mit keinem Browser. Mit...
  • Java App startet nicht mehr nach letztem Windows 10 Update

    Java App startet nicht mehr nach letztem Windows 10 Update: Liebe Community, ich verwende eine Java App (Unternehmensplanspiel von Topsim), die bis zum letzten Update von Windows 10 letzte Woche unter JRE...
  • firefox download java plugin aktivieren?

    firefox download java plugin aktivieren?: Hallo zusammen Ich habe Firefox 58.04 möchte gerne java plugin installieren, aber welche muss man installieren? woher kann man herunterladen...
  • Plötzlich kein Ton mehr nach Java Script Update bzw.

    Plötzlich kein Ton mehr nach Java Script Update bzw.: Guten Tag. Vor ein paar Tagen erhielt ich Mitteilung, dass Updates für Adobe Flashplayer und für Java Script zur Verfügung stehen. Habe beides...
  • per java aus string einen string array machen

    per java aus string einen string array machen: Kann mir jemand helfen? Muß aus einem Text einzelnen buchstaben rausfiltern. Strinng text; Scanner sc = new Scanner (new File...
  • Ähnliche Themen

    Oben