Compiler-Fehler not equals

Hallo,

Ich will 3 Tabellen miteinader vergleichen, stoße jedoch auf einige Probleme hierbei.

Mein Mommentanes Problem ist in Zeile 41.

Ich will ausdrücken dass die beiden Werte sich nicht gleichen sollen.

Mir ist klar das dies mommentan nicht der Fall ist... doch so wird der Code ausgeführt

Ich habe schon folgende Varianten ausprobiert, welche alle zu einem Fehler in Zeile 44 zufolge hatten.

while (!SspZelle.equals(DialogZelle)){
while (SspZelle != DialogZelle){

gibt es noch andere Möglichkeiten "ungleich" auszudrücken?

oder liegt mein Fehler doch wo ganz anders?

Java:
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.JXLException;
import jxl.Sheet;
import jxl.Workbook;


public class Tool {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws JXLException 
	 */
	public static void main(String[] args) throws IOException, JXLException {
		Workbook SSPCodes = Workbook.getWorkbook(new File("Dateipfad/SSPCodes.xls"));		
		Workbook Dialogcodes = Workbook.getWorkbook(new File("Dateipfad/Codeliste.xls"));
		Workbook Stopliste = Workbook.getWorkbook(new File("Dateipfad/Stopliste.xls"));
		
		Sheet ssp = SSPCodes.getSheet(0);
		Sheet dialog = Dialogcodes.getSheet(0);
		Sheet stop = Stopliste.getSheet(0);
		
		int sspZeile = 2;
		int sspSpalte = 2;
		int dialogZeile = 4;
		int dialogSpalte = 4;
		int stopZeile = 1;
		int stopSpalte = 4;
		
		Cell sspCell = ssp.getCell(sspSpalte,sspZeile);
		Cell dialogCell = dialog.getCell(dialogSpalte,dialogZeile);
		Cell stopCell = stop.getCell(stopSpalte,stopZeile);
		
		String SspZelle = sspCell.getContents();
		String DialogZelle = dialogCell.getContents();
		String StopZelle = stopCell.getContents();
		
		
		while (SspZelle.equals(DialogZelle)){
			dialogSpalte=dialogSpalte+1;
			dialog = Dialogcodes.getSheet(0);
			dialogCell = dialog.getCell(dialogSpalte,dialogZeile);
			DialogZelle = dialogCell.getContents();
			if (DialogZelle == null ) {
				dialogZeile = 4;
				sspZeile++;
				sspCell = ssp.getCell(sspSpalte, sspZeile);
				SspZelle = sspCell.getContents();
			}
		}
		
		System.out.println(SspZelle);
		System.out.println(DialogZelle);
		System.out.println(StopZelle);
		
		SSPCodes.close();
		Dialogcodes.close();
		Stopliste.close();
	}

}
 

pl4gu33

Top Contributor
also normal sollte das mit ! string1.equals(string2) gehen .... lass dir vll. mal vorher mit System.out.println die Strings ausgeben, ob wirklich das drin steht, was drin stehen soll bzw. was als genauer Fehler kommt

ps: kann es vll. sein, dass du ne NullPointerException bekommst, weil

Cell

getContents kann Null werden und somit is dann SspZelle Null
 
Zuletzt bearbeitet:
Das ist die Entsprechende Fehlermeldung

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 43
at jxl.read.biff.SheetImpl.getCell(SheetImpl.java:279)
at Tool.main(Tool.java:44)
 
Ok ich lass es heute nachmittag mal durch den Debugger rennen und gug was drin steht...

Doch ich kann mir nicht erklären wie da falsche werte rein kommen, die Werte sind Integer und das einzige was ich mit denen anstelle ist sie um eins zu erhöhen ... -.-

naja wird sich heute nachmittag zeigen. Danke für deine Hilfe
 

Xeonkryptos

Bekanntes Mitglied
Doch ich kann mir nicht erklären wie da falsche werte rein kommen, die Werte sind Integer und das einzige was ich mit denen anstelle ist sie um eins zu erhöhen ... -.-

Schau in die Fehlermeldung! Eine ArrayIndexOutOfBounds-Exception bekommst du, wenn du auf ein Array zugreifen willst, was vielleicht nur 5 Felder hat, du aber ins 6. Feld schauen willst! Also wenn du über die Grenzen des Arrays gehst und dort versuchst darauf zuzugreifen!

Verhindern kann man das, indem man einfach prüft, ob der verwendete Integer-Wert immer unter der maximalen Länge deines Arrays liegt. Wenn du dafür die length-Variable verwendest, musst du hier "-1" rechnen, da ein Array bei 0 das Zählen beginnt und length die Felder von 0 - 10 zählt und 11 ausgibt!
 
Ok danke ich gug mal danach ;) Danke

Auch wenn ich es mir nicht vorstellen kann.... mein Array hat um die 30.000 Felder ... und der Fehler direkt beim Compilieren auftritt
 

diggaa1984

Top Contributor
Und ne AIOOBE kommt doch net beim compilieren :)

Und rein logisch betrachtet ein Beispiel, welches deinem Ablauf gleicht. Es muss in dem Fall knallen, dein Code ist also bezüglich dieser Exception noch nicht korrekt.
Java:
public class MainClass {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String[] dialog = {"foo","foo","foo"};
		String sspZelle = "foo";
		int dialogSpalte = 0;
		String dialogCell = dialog[dialogSpalte]; //in deinem Fall wird daraus noch DialogZelle

		while (sspZelle.equals(dialogCell)){
		    dialogSpalte= dialogSpalte + 1;
		    dialogCell = dialog[dialogSpalte];

		    //...    
		}
	}
}
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
wenn
Code:
dialogSpalte = 2
ist und damit das letzte Element in
Code:
dialog
anvisiert, prüfst du den Inhalt des Elementes, welcher identisch mit dem Teststring
Code:
sspZelle
ist.
Die Schleife läuft erneut durch, setzt
Code:
dialogSpalte = 3
und dann greifst du auf einen Index zu, den
Code:
dialog
nicht mehr besitzt => AIOOBE in zeile 14

Das passiert aber nur, wenn wirklich das letzte Element auch noch identisch sein sollte mit dem Teststring, sonst steigst du ja schon vorher aus.
 

pl4gu33

Top Contributor
Code:
 String dialogCell = dialog[dialogSpalte];
Code:
 dialogCell = dialog[dialogSpalte];

sollte es wohl heißen oder?^^
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
@pl4gu33
ich hatte die Bezeichner nochmal angepasst an seine Bezeichner .. ist mir wohl einer durch die Lappen gegangen :D

@Thor_der_Gott
Kann ich nicht genau sagen, aber in Eclipse seh ich keine Compilerfehler. In der Regel erkennt der dann Java-Syntaxfehler, Typprobleme und wie in Eclipse "dead code".
 

pl4gu33

Top Contributor
du kannst ja mal am Anfang deines Programms ein System.out.println("Start:"); einbauen und dann siehst du ja, dass dein Programm läuft :)
 
So ich bedanke mich nochmal bei allen Mitwirkenden =D Das mit dem

Java:
System.out.println("Start");

war eine geniale Idee einfach und genial =D

Hat meinen Fehler aufgedeckt =D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
mihe7 equals und instanceOf pattern matching Allgemeine Java-Themen 9
P Strings: equals vs == Allgemeine Java-Themen 47
F Methoden hashCode() & equals() Allgemeine Java-Themen 13
J Equals Mock Objekte Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
J Probleme mit CodeCoverage und Lombok Equals Allgemeine Java-Themen 1
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
T Zwei Wortendungen vergleichen ohne .equals Allgemeine Java-Themen 10
C Object.equals() liefert falschen Wert? Allgemeine Java-Themen 14
T Collections TreeSet.contains ruft nicht .equals? Allgemeine Java-Themen 4
H Problem mit der .equals()-Methode Allgemeine Java-Themen 2
I HashMap key wird nicht erkannt trotz überschriebener equals/hashCode Methode Allgemeine Java-Themen 6
V ArrayList vergleichen mit .equals? Allgemeine Java-Themen 13
A mit .equals Array befüllen schlägt teilweise fehl Allgemeine Java-Themen 3
G Probleme mit equals Allgemeine Java-Themen 3
R Merkwürdiges Verhalten der equals Method Allgemeine Java-Themen 4
tuttle64 equals() und == Allgemeine Java-Themen 4
B Probleme mit eigener equals Methode Allgemeine Java-Themen 18
H double dispatch und equals(Object) Allgemeine Java-Themen 6
S equals - Identität ändern bei Vererbung? Allgemeine Java-Themen 5
fastjack jUnit und Test von equals, hashCode, toString Allgemeine Java-Themen 11
K Collection.contains()/retainAll() mit Referenzgleichheit statt equals()? Allgemeine Java-Themen 2
J Best Practice für implementierung von equals(...) Allgemeine Java-Themen 7
M equals & compareTo Allgemeine Java-Themen 15
M Warum Strings mit equals vergleichen... Allgemeine Java-Themen 6
T Wie intelligent ist dieses überschriebene .equals() ? Allgemeine Java-Themen 13
G Objektvergleich mit equals Allgemeine Java-Themen 5
vogella Überschreiben von equals und hashcode für Collection Allgemeine Java-Themen 7
M String#equals(), Probleme mit großen Strings? Allgemeine Java-Themen 4
André Uhres equals überschreiben Allgemeine Java-Themen 31
F Problem: mehrere Interfaces definieren equals() neu Allgemeine Java-Themen 24
A equals() macht nicht, was es soll Allgemeine Java-Themen 4
B Equals Methode überschreiben mit Array Allgemeine Java-Themen 2
M equals() != compareTo() ? Allgemeine Java-Themen 3
M String mit equals() vergleichen - Frage Allgemeine Java-Themen 3
S equals überladen Allgemeine Java-Themen 15
S Mal was allgemeines zu equals() Allgemeine Java-Themen 12
J Arrays vergleichen mit equals Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben