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

Diskutiere [Java] wie "if(String==array[x][y])" machen? im Programmierung Forum im Bereich Software Forum; 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...
oele3110

oele3110

Threadstarter
Dabei seit
17.08.2004
Beiträge
1.152
Alter
31
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
 
BrandyJr

BrandyJr

Dabei seit
02.11.2003
Beiträge
3.707
Alter
39
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. ;)
 
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:
BrandyJr

BrandyJr

Dabei seit
02.11.2003
Beiträge
3.707
Alter
39
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.
 
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:
oele3110

oele3110

Threadstarter
Dabei seit
17.08.2004
Beiträge
1.152
Alter
31
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
 
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
 
BrandyJr

BrandyJr

Dabei seit
02.11.2003
Beiträge
3.707
Alter
39
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?

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

  • 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...
  • Minecraft gift code für Windows 10 (java edition gekauft seit 2016)

    Minecraft gift code für Windows 10 (java edition gekauft seit 2016): Hallo, funktioniert bei mir über den Mojang Account nicht. Was muss ich tun um als Minecraft Java Besitzer (2016) die Minecraft Windows 10...
  • GELÖST TV-Browser und portable Java

    GELÖST TV-Browser und portable Java: Lange hat es ja schon gehalten: Klick Die neuste Version vom TV-Browser , ich nutze hier Version für transportable Medien (Download, falls jemand...
  • Bei Mojang Minecraft Java gekauft, wie spiele ich jetzt Windows 10 Minecraft?

    Bei Mojang Minecraft Java gekauft, wie spiele ich jetzt Windows 10 Minecraft?: Hey ich habe mir über Mojang Minecraft gekauft und wollte nun mit einem Freund spielen, dazu benötige ich die windows 10 version, muss ich sie mir...
  • Ähnliche Themen
  • 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...
  • Minecraft gift code für Windows 10 (java edition gekauft seit 2016)

    Minecraft gift code für Windows 10 (java edition gekauft seit 2016): Hallo, funktioniert bei mir über den Mojang Account nicht. Was muss ich tun um als Minecraft Java Besitzer (2016) die Minecraft Windows 10...
  • GELÖST TV-Browser und portable Java

    GELÖST TV-Browser und portable Java: Lange hat es ja schon gehalten: Klick Die neuste Version vom TV-Browser , ich nutze hier Version für transportable Medien (Download, falls jemand...
  • Bei Mojang Minecraft Java gekauft, wie spiele ich jetzt Windows 10 Minecraft?

    Bei Mojang Minecraft Java gekauft, wie spiele ich jetzt Windows 10 Minecraft?: Hey ich habe mir über Mojang Minecraft gekauft und wollte nun mit einem Freund spielen, dazu benötige ich die windows 10 version, muss ich sie mir...
  • Sucheingaben

    content

    ,

    if string array java

    Oben