Javakurs/Übungsaufgaben/Errors: Unterschied zwischen den Versionen
< Javakurs | Übungsaufgaben
(→LaufzeitFehler) |
(→CompilerFehler) |
||
Zeile 3: | Zeile 3: | ||
== CompilerFehler == | == CompilerFehler == | ||
− | + | '''Klammer fehlt''' | |
bruja shabanov 10 (Desktop/JavaKurs): javac Errors.java | bruja shabanov 10 (Desktop/JavaKurs): javac Errors.java | ||
Zeile 17: | Zeile 17: | ||
− | + | '''Doppelte Deklaration''' | |
bruja shabanov 11 (Desktop/JavaKurs): javac Errors.java Errors.java:5: i is already defined in main(java.lang.String[]) | bruja shabanov 11 (Desktop/JavaKurs): javac Errors.java Errors.java:5: i is already defined in main(java.lang.String[]) | ||
for( int i = 0 ; i < 10 ; i++ ){ | for( int i = 0 ; i < 10 ; i++ ){ | ||
Zeile 29: | Zeile 29: | ||
---- | ---- | ||
+ | |||
+ | '''Definition fehlt''' | ||
+ | bruja shabanov 5 (Desktop/JavaKurs): javac Errors.java | ||
+ | Errors.java:15: variable ret might not have been initialized | ||
+ | return ret; | ||
+ | ^ | ||
+ | 1 error | ||
+ | * Ihr habt eine Variable nicht richtig initialisiert, das passiert oft wenn ihr einer Variable innerhalb einer if-Anweisung Werte zuweist, wie in diesem Code ( der zudem obigen Fehler führt ): | ||
+ | public static String someMethod( int x ){ | ||
+ | String ret; | ||
+ | if( x == 4711 ){ | ||
+ | ret = "foobar"; | ||
+ | } | ||
+ | return ret; | ||
+ | } | ||
+ | * Die Variable ret bekommt nur dann einen Wert zugeordnet wenn x == 4711 gilt, da dies nicht immer der Fall sein muss, könnte der Fall auftreten, dass ret gar keinen Wert zugeordnet bekommt. | ||
+ | * Fügt einen default Wert für ret hinzu um diesen Fehler zu beheben, z.B. so: | ||
+ | String ret = ""; | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | '''Missing return statement''' | ||
+ | bruja shabanov 6 (Desktop/JavaKurs): javac Errors.java | ||
+ | Errors.java:17: missing return statement | ||
+ | } | ||
+ | ^ | ||
+ | 1 error | ||
+ | * Ihr habt in einer Methode, die etwas zurückgeben soll entweder das return vergessen, oder das return steht nur innerhalb von if Anweisungen, wie hier: | ||
+ | public static boolean isPositive( int num ){ | ||
+ | if( num > 0 ){ | ||
+ | return true; | ||
+ | }else if( num < 0 ){ | ||
+ | return false; | ||
+ | } | ||
+ | } | ||
+ | * Da alle returns in einem if Block stehen, könnte es theoretisch sein, dass keiner der Blöcke ausgeführt wird und Java somit nicht weiss was es zurück geben soll. | ||
+ | * Fügt um das Problem zu Lösen ein return am Ende euerer Mthode ein, oder ändert ein else if in ein else. | ||
+ | public static boolean isPositive( int num ){ | ||
+ | if( num > 0 ){ | ||
+ | return true; | ||
+ | }else if( num < 0 ){ | ||
+ | return false; | ||
+ | } | ||
+ | '''return false;''' | ||
+ | } | ||
== LaufzeitFehler == | == LaufzeitFehler == |
Version vom 12. April 2007, 11:48 Uhr
Häufige Java Fehler mit Hilfe
CompilerFehler
Klammer fehlt
bruja shabanov 10 (Desktop/JavaKurs): javac Errors.java Errors.java:7: '}' expected ^ 1 error
- Es fehlt einfach eine geschweifte Klammer.
- Jedes mal wenn ihr eine geschweifte Klammer aufmacht, macht sie gleich wieder zu, damit ihrs später nicht vergesst.
- Bei Klammerfehlern solltet ihr nach jedem korrigierten Fehler neukompilieren, da es normalerweise zu sehr vielen Folgefehlern kommt.
Doppelte Deklaration
bruja shabanov 11 (Desktop/JavaKurs): javac Errors.java Errors.java:5: i is already defined in main(java.lang.String[]) for( int i = 0 ; i < 10 ; i++ ){ ^ 1 error
- Die Variable i ist irgendwo bereits definiert gewesen. Sucht also vor dieser Zeile nach einem:
int i = ..
- Ihr müsst dann den Variablennamen in der Schleife z.B. ändern.
Definition fehlt
bruja shabanov 5 (Desktop/JavaKurs): javac Errors.java Errors.java:15: variable ret might not have been initialized return ret; ^ 1 error
- Ihr habt eine Variable nicht richtig initialisiert, das passiert oft wenn ihr einer Variable innerhalb einer if-Anweisung Werte zuweist, wie in diesem Code ( der zudem obigen Fehler führt ):
public static String someMethod( int x ){ String ret; if( x == 4711 ){ ret = "foobar"; } return ret; }
- Die Variable ret bekommt nur dann einen Wert zugeordnet wenn x == 4711 gilt, da dies nicht immer der Fall sein muss, könnte der Fall auftreten, dass ret gar keinen Wert zugeordnet bekommt.
- Fügt einen default Wert für ret hinzu um diesen Fehler zu beheben, z.B. so:
String ret = "";
Missing return statement
bruja shabanov 6 (Desktop/JavaKurs): javac Errors.java Errors.java:17: missing return statement } ^ 1 error
- Ihr habt in einer Methode, die etwas zurückgeben soll entweder das return vergessen, oder das return steht nur innerhalb von if Anweisungen, wie hier:
public static boolean isPositive( int num ){ if( num > 0 ){ return true; }else if( num < 0 ){ return false; } }
- Da alle returns in einem if Block stehen, könnte es theoretisch sein, dass keiner der Blöcke ausgeführt wird und Java somit nicht weiss was es zurück geben soll.
- Fügt um das Problem zu Lösen ein return am Ende euerer Mthode ein, oder ändert ein else if in ein else.
public static boolean isPositive( int num ){ if( num > 0 ){ return true; }else if( num < 0 ){ return false; } return false; }
LaufzeitFehler
- java.lang.NoClassDefFoundError
bruja shabanov 7 (Desktop/JavaKurs): java Errors Exception in thread "main" java.lang.NoClassDefFoundError: Errors
- Heisst Java kann die Klasse nicht finden, die ihr ausführen wollt.
- Schaut genau nach ob der Dateiname und der Klassennamme gleich sind. Dabei ist auch wichtig die Groß/Klein Schreibung zu beachten. Ausserdem achtet darauf ob ihr in die Konsole die richtigen Namen eingetippt habt.
- java.lang.NoSuchMethodError
bruja shabanov 9 (Desktop/JavaKurs): java Errors Exception in thread "main" java.lang.NoSuchMethodError: main
- Java Findet eine Methode nicht ( hier speziell die main Methode )
- Schaut ob ihr beim Aufruf den Methodennamen richtig geschrieben habt.