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();
	}

}
 
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
 
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
 
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:
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.
 
Code:
 String dialogCell = dialog[dialogSpalte];
Code:
 dialogCell = dialog[dialogSpalte];

sollte es wohl heißen oder?^^
 
Zuletzt bearbeitet:
@pl4gu33
ich hatte die Bezeichner nochmal angepasst an seine Bezeichner .. ist mir wohl einer durch die Lappen gegangen 😀

@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".
 
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
 

Zurück
Oben