Else-Anweisung Problem

smart85

Mitglied
Hallo liebe Leute,

ich quelle mich schon seit einigen Stunden und verstehe nicht wieso im folgendem Code die else-Anweisung nicht ausgegeben wird.

Zuerst schreibe ich was ich da mache, ich gebe einen Regisseur ein von der Tastatur und es erfolgt ein Vergleich des eingegebenen Regisseur mit dem aus meiner .txt Liste, die ich jetzt nicht aufführe. In dieser .txt Datei sind Filme mit zugehörigen Regisseuren gespeichert...

Mein Problem beim Fehlerabfangen. Ich schreibe z.B. anstatt Steven Spielberg irgendein Quatsch...z.B. "bla bla" und es soll auf meiner Console folgendes ausgegeben werden: "Der Film existiert nicht"

aber diese Anweisung wird nicht ausgegeben...ich verstehe nicht warum

Bitte helft mir, ich möchte verstehen wo mein Fehler liegt

Mein Code:

Java:
//package com.tutego.insel.xml.dom;
import java.io.*;

public class Main {

	public static void main(String[] args) throws Exception {
		
		String regisseur="";
	    MovieLister mlist = new MovieLister();
  	
	    		System.out.print("Bitte geben Sie den Regisseur ein: ");
	    		InputStreamReader isr = new InputStreamReader(System.in);//Eine komplette Zeile von der Standardeingabe lesen
	    	    BufferedReader buffer = new BufferedReader(isr);
	    		regisseur = buffer.readLine();//Texteingabe von Tastatur.

	    	    buffer.close();
	    		Movie[] film = mlist.moviesDirectedBy(regisseur);
	    		 
	    		//for(Movie m : film)  
	    		int i=0;
    			if(film != null){

	    	      for (i=0; i<film.length; i++)
	    	    	  System.out.println(regisseur + ">>> "+film[i].getTitle());
	    				//j++;	    		
	    	    }
    			else 
    			 System.out.println("Der Film existiert nicht");


Danke im Voraus!!!
 

HoaX

Top Contributor
Scheinbar gibt mlist.moviesDirectedBy(regisseur); kein null zurück. Mehr kann man da nicht sagen, wir kennen den Rest von deinem Code ja nicht.
 

pro2

Bekanntes Mitglied
Du schreibst:
Wenn film ungleich null ist, dann such da durch. Wenn nicht, gib die Fehlermeldung aus. Film initialisiert du aber vorher immer, also wird die Variable nie null sein ;) Ich glaub nicht, dass du null da zurück gibst.

Mach dir doch z. B. einen boolean, dann geh durch die Liste, wenn du deinen Film findest setzt du den boolean auf true (bzw. gibst true zurück) und wenn nicht bleibt die Variable false. Dann kannst du damit deine Meldung ausgeben.. zum Beispiel!
 

smart85

Mitglied
die Methode MoviesDirectedBy wird aus dieser Klasse aufgerufen...

Java:
import java.util.ArrayList;

public class MovieLister {
	
private IMovieFinder movieFinder = new XMLMovieFinder();
public MovieLister(){}

	public Movie[] moviesDirectedBy(String director){		

   	ArrayList<Movie> allefilme = movieFinder.findall();
   	ArrayList<Movie> filme = new ArrayList<Movie>();
   
   	
	   	for(int j = 0; j < allefilme.size(); j++){
	   		if(allefilme.get(j).getDirector().equals(director)){
	   			filme.add(allefilme.get(j));
	   		}
	   	}
	Movie[] filmliste = new Movie[filme.size()];
   	filme.toArray(filmliste);
   	return filmliste;
   		   
	   
   }
}
 

irgendjemand

Top Contributor
die Methode MoviesDirectedBy wird aus dieser Klasse aufgerufen...

Java:
import java.util.ArrayList;

public class MovieLister {
	
private IMovieFinder movieFinder = new XMLMovieFinder();
public MovieLister(){}

	public Movie[] moviesDirectedBy(String director){		

   	ArrayList<Movie> allefilme = movieFinder.findall();
   	ArrayList<Movie> filme = new ArrayList<Movie>();
   
   	
	   	for(int j = 0; j < allefilme.size(); j++){
	   		if(allefilme.get(j).getDirector().equals(director)){
	   			filme.add(allefilme.get(j));
	   		}
	   	}
	Movie[] filmliste = new Movie[filme.size()];
   	filme.toArray(filmliste);
   	return filmliste;
   		   
	   
   }
}

gut ... ich sehe da aber nirgends ein "NULL" ... ergo kannst du im caller auch nicht auf "NULL" prüfen


btw : kann man überhaupt [c]Object[] == null[/c] schreiben ?
 

Landei

Top Contributor
Wenn kein Wert gefunden wird, bekommst du nicht [c]null[/c], sondern ein Array der Länge 0 zurück. Der Test muss also [c]if(film.length > 0)[/c] lauten.
 
Also mal 2 kleine Brocken aus deinem ersten code:

Java:
MovieLister mlist = new MovieLister();
    
Movie[] film = mlist.moviesDirectedBy(regisseur);

wenn ich mich richtig zurückerinnere ist das hier schon irgendwie eine komische Sache. Du erstellst ein neues Objekt vom Typ MovieLister . Etwas später erstellst du ein Array vom Typ Movie und statt dieses Array zu instanziieren und mit dem Inhalt deiner Abfrage zu befüllen weist du der film-Variablen lediglich eine Referenz zu.

mlist.moviesDirectedBy(regisseur) gibt ja bereits ein Array zurück. Daher kannst du bereits dieses Array (also den Rückgabewert der Methode) nach seiner Grösse abfragen :

Java:
if (mlist.moviesDirectedBy(regisseur).length > 0)
{
 .....
}

Noch ne kleine Anmerkung : Zeile 20 -->[c] int i = 0;[/c] paar Zeilen weiter benutzt du das i und weist erneut 0 zu --> [c] for (i = 0 ;.... )[/c]. doppelt gemoppelt ;) Besser und sicherer ist es wenn du i nur im Schleifenkopf deklarierst/definierst da die Variable dann auch nur da sichtbar ist und die Gefahr eines Überschreibens etc nicht besteht.
Und noch eine Anmerkung : Bei Stringvergleichen (equals) ist es besser (ausser es kommt wirklich 100% auf die Schreibweise als Ergebnis an) equalsIgnoreCase(...) zu benutzen, sonst kommt öfter mal ein false zurück weil die Schreibweise nicht exakt war mit dem verglichenem String.
 
Zuletzt bearbeitet:

smart85

Mitglied
SUPER!!! VIELEN DANK!! es hat mit if(film.length > null) funktioniert, aber der Ausdruck if(film != null) ist doch das Gleiche oder? Was ist hier der Unterschied?

ich habe den Code in der Zwischenzeit umgeschrieben...hier...aber hat auch nicht funktioniert, leider

Java:
for(i=0;i<film.length;i++){
        	if(film[i]!=null)
        		System.out.println("regisseur" + " >>> " +film[i].getTitle());
        	else
    			System.out.println("Der Film existiert nicht");
 
G

Gast2

Gast
Mit der einen Abfrage prüfst du ob deine Referenz null ist, mit der anderen Abfrage prüfst du ob das referenzierte Array leer ist.
 
>, <, ==, >=, <=

links grösser rechts
links kleiner rechts
links gleich rechts
links groesser gleich rechts
links kleiner gleich rechts

Sind alles Vergleiche auf Gleichheit
Der ! Operator bedeutet NICHT. In Verbindung mit = (also !=) bedeutet es also NICHT-GLEICH oder Ungleich.

Also if(a != b) bedeutet WENN a NICHT b ist. Zu deinem Code if(film != null) bedeutet WENN film NICHT null ist) Null ist nicht 0 (also kein Zahlenwert) . Dein film != null funktioniert daher, da in film eine Referenz (Zeiger) auf ein Array gespeichert ist und somit ist film nicht null.

film.length > null wird als Ergebnis immer true haben, da auch ein unbefülltes Array eine Grösse besitzt, nämlich 0. Und 0 ist "grösser" als null (Nichts).
 
Zuletzt bearbeitet:

irgendjemand

Top Contributor
[c]if(film.length > null)[/c] das will ich sehen welcher compiler das schluckt ...

allerhöchstens [c]if(film.length > 0)[/c]

der unterschied ist : mit dem einen prüfst du auf "länge größer 0" ... und das andere ist ein referenz-vergleich


[ot]könnte mir trotzdem jemand meine frage beantworten : Object[]==null ? ist das überhaupt möglich ?[/ot]
 
Ein Array ist kein primitiver Datentyp, von daher ist der Wert der zugehörigen Variablen eines nur definierten Arrays (also nicht mit [c] Object[] bla = new Object[...];[/c] instanziiert) null.

Bei primitiven Datentypen wie int short byte etc. ist mit der Definition [c] int i; [/c] bereits ein default-Wert (in Abhängigkeit des primitiven Datentyps) vorhanden.
 

irgendjemand

Top Contributor
gut ... wenn Object[] == null geht ... dann natürlich auch <? extends Object>[] == null ...

was mich jetzt noch interessieren würde : <primitiver Datentyp>[] == null ?
das die einzelnen elemente einen default-wert bekommen ist mir klar ... aber die referenz des arrays selbst müsste mann doch null setzen können ... oder hab ich da jetzt wieder mal denkfehler was Arrays angeht ?
 
G

Gast2

Gast
Java:
<primitiver Datentyp>[] == null
Soll das nen generic sein? Das geht dann schonmal gar nicht. Generics können nicht primitiv sein.

Wenn das nur nen Platzhalter sein soll, dann ja, das geht.
Java:
int[] arr = null;
Das kannst du problemlos deklarieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Darstellung von else if anweisung im struktogramm? Allgemeine Java-Themen 1
J if else Anweisung macht nicht was es soll. Wieso? Allgemeine Java-Themen 10
J Mehrfache if-else-Abfrage zusammenfassen Allgemeine Java-Themen 51
ReinerCoder Case statt if else Abfragen?! Allgemeine Java-Themen 8
M Variablen If - Else Wiederholungsfehler Allgemeine Java-Themen 3
L Vererbung If-Else ersetzen durch was? Allgemeine Java-Themen 20
R Wie schaffe ich es, dass java zB 100 zählt ohne ständig "else if" hinschreiben zu müssen? Allgemeine Java-Themen 7
K Eclipse Alternativkonstrukte (Verzweigungen: if, switch,else..) Allgemeine Java-Themen 4
D if - else Baum vereinfachen Allgemeine Java-Themen 4
B Berechnung von Punkten/ If-else Strategie?! Allgemeine Java-Themen 51
M if - else Abfrage beenden Allgemeine Java-Themen 4
M if, else, etc. als Membervariablen? Allgemeine Java-Themen 14
P if(a) else if (b) else if (c) . Frage Allgemeine Java-Themen 2
G die mittlere von 5 Zahlen nur mit if und else finden Allgemeine Java-Themen 48
U Kompilieren einer großen Datei if-else = StackOverflowError Allgemeine Java-Themen 4
W kompliziertes Konstrukt von Schleifen/If/else. Rekursion? Allgemeine Java-Themen 22
G switch case VS. if.else if Allgemeine Java-Themen 2
H if - else if-else bessere Lösung gesucht Allgemeine Java-Themen 4
H If anweisungen zu verschachtelt? else without if Allgemeine Java-Themen 8
D Performancefrage zu "else if" und "||" Allgemeine Java-Themen 10
G if . else ? Allgemeine Java-Themen 36
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
W Switch Anweisung Allgemeine Java-Themen 4
killig HashMap mit if-Anweisung überprüfen Allgemeine Java-Themen 4
MiMa Switch Anweisung Allgemeine Java-Themen 10
S Methoden "Unschöne" Break-Anweisung aus verschachtelter Funktion entfernen Allgemeine Java-Themen 11
E Die if-Anweisung in einer Java Bean bzw. in einem Servlet? Allgemeine Java-Themen 8
J VB --> Java (Set Anweisung) Allgemeine Java-Themen 2
M if-Anweisung in endlosschleifewird nicht aufgerufen Allgemeine Java-Themen 2
S Erste Schritte if-Anweisung in for- oder while-schleife umwandeln Allgemeine Java-Themen 3
S Problem mit if-Anweisung Allgemeine Java-Themen 6
K import- Anweisung fehlerhaft und andere Fehler (eclipse) Allgemeine Java-Themen 2
R if-Anweisung wird angemeckert, andere identische nicht Allgemeine Java-Themen 9
@ [Eclipse] Fehlermeldung bei import-Anweisung Allgemeine Java-Themen 3
M try-catch (Wie erzwing ich die catch-Anweisung)? Allgemeine Java-Themen 13
M Problem mit if-Anweisung Allgemeine Java-Themen 10
S mehrfach if-anweisung Allgemeine Java-Themen 8
B Zwei Bedingungen für eine Anweisung Allgemeine Java-Themen 4
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23

Ähnliche Java Themen

Neue Themen


Oben