Fehlermeldung

Bekomme immer folgende Fehlermeldung beim Checkstyle:

.java:34:51: Ein Block muss mindestens eine Anweisung enthalten. [EmptyBlock]
GameMaster.java:37:58: Ein Block muss mindestens eine Anweisung enthalten. [EmptyBlock]
GameMaster.java:40:59: Ein Block muss mindestens eine Anweisung enthalten. [EmptyBlock]
GameMaster.java:43:60: Ein Block muss mindestens eine Anweisung enthalten. [EmptyBlock]

Java:
import java.util.Scanner;
/**
 *  Beispiel zur Benutzung von Kommandozeilen-Parametern.
 */
public class GameMaster {
  
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter size of the map: ");
        int size = sc.nextInt();
      
        Wizard wiz = new Wizard(size);
      
        String command = "";
      
      
        do {
            System.out.println("What do you want to do ?");
            command = sc.nextLine();
            if (command.equals("")) {
                command = sc.nextLine();
            }
          
            String[] commandParts = command.split(" ");
          
            String commandPart1 = commandParts[0];
            String commandPart2;
            switch (commandPart1) {
              
                case "walk":
                    commandPart2 = commandParts[1];
                  
                  
                    if (commandPart2.equals("N")) {
                     
                  
                    } else if (commandPart2.equals("S")) {
                      
                  
                    }  else if (commandPart2.equals("W")) {
                      
                  
                    }   else if (commandPart2.equals("E")) {
                      
                    }
                    break;
                case "take":
                    break;
                case "map":
                    break;
                case "drop":
                    break;
                case "inv":
                    break;
            }
          
        } while (command.equals("done"));
      
    }
  
}

                     
                 
                    }   else if (commandPart2.equals("E")) {
 
K

kneitzel

Gast
Du hast mehrfach leere Blöcke. Da das so keinen Sinn macht, ist das eine Regel, die geprüft wird.

Also Code anpassen oder die Regel nicht mehr prüfen...
 
K

kneitzel

Gast
irgendwas stimmt mit dne Klammern nicht.
Die Klammerung ist schon ok aus meiner Sicht. Nur eben sind die Blöcke einfach leer und der Code macht z.B. absolut nichts:
Java:
                    if (commandPart2.equals("N")) {
                    
                  
                    } else if (commandPart2.equals("S")) {
                      
                  
                    }  else if (commandPart2.equals("W")) {
                      
                  
                    }   else if (commandPart2.equals("E")) {
                      
                    }

Ok, stimmt nicht ganz - der Code prüft, ob commandPart2 null ist und wirft ggf. eine NPE :)
 
M

Mart

Gast
Die Klammerung ist schon ok aus meiner Sicht. Nur eben sind die Blöcke einfach leer und der Code macht z.B. absolut nichts:
Java:
                    if (commandPart2.equals("N")) {
                  
                
                    } else if (commandPart2.equals("S")) {
                    
                
                    }  else if (commandPart2.equals("W")) {
                    
                
                    }   else if (commandPart2.equals("E")) {
                    
                    }

Ok, stimmt nicht ganz - der Code prüft, ob commandPart2 null ist und wirft ggf. eine NPE :)
was ist denn damit zb

Java:
    }   else if (commandPart2.equals("E")) {
ganz unten ...

hab gar nich gewusst dass die main mit einer offenen Klammer aufhört und eineMethode mit einer schließenden anfängt ;)
die Zeile steht da so einsam und verlassen 😄
 
K

kneitzel

Gast
Da ist einfach ein Fehler beim Copy & Paste passiert. Die Klasse ist komplett und korrekt:
Java:
import java.util.Scanner;
/**
 *  Beispiel zur Benutzung von Kommandozeilen-Parametern.
 */
public class GameMaster {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter size of the map: ");
        int size = sc.nextInt();
      
        Wizard wiz = new Wizard(size);
      
        String command = "";
      
      
        do {
            System.out.println("What do you want to do ?");
            command = sc.nextLine();
            if (command.equals("")) {
                command = sc.nextLine();
            }
          
            String[] commandParts = command.split(" ");
          
            String commandPart1 = commandParts[0];
            String commandPart2;
            switch (commandPart1) {
              
                case "walk":
                    commandPart2 = commandParts[1];
                  
                  
                    if (commandPart2.equals("N")) {
                    
                  
                    } else if (commandPart2.equals("S")) {
                      
                  
                    }  else if (commandPart2.equals("W")) {
                      
                  
                    }   else if (commandPart2.equals("E")) {
                      
                    }
                    break;
                case "take":
                    break;
                case "map":
                    break;
                case "drop":
                    break;
                case "inv":
                    break;
            }
          
        } while (command.equals("done"));
      
    }
 
}

Und das abschließende
Java:
                    }   else if (commandPart2.equals("E")) {
hat sich dann offensichtlich nur noch irgendwie eingemogelt.

Aber dem TE geht es ja nicht um Java Compiletime Fehler sondern um Meldungen vom Checkstyle Analyse Tool.
 
K

kneitzel

Gast
@Mart :) Jetzt hab ich ein Eigentor geschossen.
Ja, aber das ändert nichts daran, dass die Klasse komplett und korrekt vorhanden ist und der TE da nur versehentlich noch eine Zeile mit dem angemeckerten Block noch einmal dahinter kopiert hat. Die Checkstyle Meldungen beziehen sich auf die leeren Blöcke bei dem if / if else / if else / if else Konstrukt und so lange da kein Inhalt kommt, kann man den ganzen Block einfach weglassen.
 
K

kneitzel

Gast
Aber wenn der TE auf seine Code Qualität achtet und da dann Code Analyse Tools verwendet, dann macht es evtl. Sinn, da noch ein paar Worte zum Code zu verlieren:

1) Vermutlich ein Fehler: } while (command.equals("done")); die Schleife soll doch bestimmt so lange laufen, wie command nicht done ist. Sprich. } while (!command.equals("done"));

2) Auswertung des Befehls an mehreren Stellen - Eine Funktionalität sollte auch an einer Stelle erbracht werden.
-> In der switch Anweisung werden Befehle ausgewertet (soweit ok). Eine Auswertung hast Du aber in die Bedingung der While-Schleife gepackt. Damit wird command an mehreren Stellen ausgewertet. Da dann lieber in der while Schleife eine Variable prüfen wie boolean shouldRun = true; die dann im case "done": auf false gesetzt wird um dann ein while (shouldRun) zu haben.

3) Besser Unterteilung. Methoden sollten wenn möglich eine Sache machen und kurz und prägnant sein.
Derzeit ist alles in einer main Methode, d.h. es gibt keinerlei Unterteilung. Bis auf das Wizard, von dem eine Instanz erzeugt wird, sehe ich auch keinerlei Objektorientierung. Sowas wäre aus meiner Sicht wichtiger, als irgendwelche Regeln einer Codeanalyse zwingend zu befolgen.
(so scheint es ja "work in progress" zu sein, d.h. der Inhalt der Blöcke kommt noch.)

4) Wenn man schon einen Rahmen schreibt aber noch nicht dazu gekommen ist, den Inhalt zu schreiben: Setz ein // TODO, also z.B.
Java:
                    if (commandPart2.equals("N")) {
                        // TODO - Go north
                    } else if (commandPart2.equals("S")) {
                        // TODO - Go south
                    }  else if (commandPart2.equals("W")) {
                        // TODO - Go west
                    }   else if (commandPart2.equals("E")) {
                        // TODO - Go east
                    }
Hintergrund ist, dass diese TODOs dann ausgewertet werden. IntelliJ kann diese als Liste anzeigen (man vergisst so also nichts) und vor einem git commit wird das z.B. auch geprüft.

5) So ein if / if else / if else .... mit Abfrage eines Strings mit equals ist oft einfach ein switch statement. Das ist in der Regel einfacher lesbar.
 
M

Mart

Gast
Danke, habe das mit den TODOs jetzt eingefügt, aber der Checkstyle meckert nach wie vor rum und gibt die gleiche Fehlermeldung aus wie vorher. :(
Das ist ein Kommentar... der Compiler ignoriert das KOMPLETT
und der der da meckert ist ja der Compiler.. bzw Checkstyle

du musst was machen in den ifs... zumindest in einem davon... im Moment ist es

"wenn nord dann" -> gar nix
"wenn süd dann" -> gar nix
...
der Check Style denkt sich dabei..."warum ist das überhaupt da wenn in egal welchem Fall nix passiert"

Bau System.out.println ein und gib zb in Jedem Abschnitt den Buchstaben aus
dann machst du ja was -> Checkstyle kann das dann durchlassen weil du irgendwas machst
 

LimDul

Top Contributor
Das ist ein Kommentar... der Compiler ignoriert das KOMPLETT
und der der da meckert ist ja der Compiler.. bzw Checkstyle

du musst was machen in den ifs... zumindest in einem davon... im Moment ist es

"wenn nord dann" -> gar nix
"wenn süd dann" -> gar nix
...
der Check Style denkt sich dabei..."warum ist das überhaupt da wenn in egal welchem Fall nix passiert"

Bau System.out.println ein und gib zb in Jedem Abschnitt den Buchstaben aus
dann machst du ja was -> Checkstyle kann das dann durchlassen weil du irgendwas machst
Checkstyle wertet Kommentare aus, aber interessiert sich bei der Regel nicht dafür :)
 
Das ist ein Kommentar... der Compiler ignoriert das KOMPLETT
und der der da meckert ist ja der Compiler.. bzw Checkstyle

du musst was machen in den ifs... zumindest in einem davon... im Moment ist es

"wenn nord dann" -> gar nix
"wenn süd dann" -> gar nix
...
der Check Style denkt sich dabei..."warum ist das überhaupt da wenn in egal welchem Fall nix passiert"

Bau System.out.println ein und gib zb in Jedem Abschnitt den Buchstaben aus
dann machst du ja was -> Checkstyle kann das dann durchlassen weil du irgendwas machst
Nice, das mit System.out.println hat geklappt. Vielen Dank :)
 
M

Mart

Gast
Checkstyle wertet Kommentare aus, aber interessiert sich bei der Regel nicht dafür :)
Gut ok man kann Kommentare mit /** schreiben um sie dann Klassen Übergreifend zu sehen ,und sie als XML darstellen zu können in der IDE

in C# sogar mit /// als einzeiler ka ob das in java geht

in IntelliJ ghets auch mit TODO anscheinend ist schön

aber ein Compiler Juckt es 0 was in einem Kommentar drin steht ... der schaut sich an wo fängt es an und wo hörts auf (sehr vereinfacht)
 

LimDul

Top Contributor
Gut ok man kann Kommentare mit /** schreiben um sie dann Klassen Übergreifend zu sehen ,und sie als XML darstellen zu können in der IDE

in C# sogar mit /// als einzeiler ka ob das in java geht

in IntelliJ ghets auch mit TODO anscheinend ist schön

aber ein Compiler Juckt es 0 was in einem Kommentar drin steht ... der schaut sich an wo fängt es an und wo hörts auf (sehr vereinfacht)
Checkstyle ist kein Compiler, Checkstyle wertet den Source Code aus.
 
M

Mart

Gast
Checkstyle ist kein Compiler, Checkstyle wertet den Source Code aus.
ja das ist mir klar ... es ging mir um den Fehler und es war dem TE nicht klar warum ein Kommentar den Fehler dass keine Anweisung drin gestanden ist nicht behoben hat..


einem Compiler sollte es eig auch egal sein wenn drei ifs leer sind da die Syntax stimmt
was vielleicht die ganze Verwirrung für den TE erst ausgelöst hat
 
K

kneitzel

Gast
Also ein sinnloses println würde ich nicht rein nehmen. Wenn da die Implementation fehlt, wäre ein throws new NotImplementedException(); besser.

Aber nur wegen CheckStyle würde ich da nichts machen - nur den Todo Kommentar. Das CheckStyle da meckert ist doch positiv - eine weitere Erinnerung, dass da noch was zu tun ist!

Du hast da einen Fehler. Und den sollte man Dir an so vielen Stellen wie möglich aufzeigen. Es ist nichts ärgerlicher, als wenn sowas durchrutscht. Checkstyle ist ein Check am Ende, ob du wirklich sauber gearbeitet hast und Formalien eingehalten hast.

Edit: Fehler meint hier: Dein Code erfüllt die Anforderung nicht. Da wird ja eine Anforderung sein, da je nach Wert irgendwas zu machen.
Und dieser Fehler ist kritisch, denn der Compiler sagt ihn Dir nicht,. Ebenso in der Regel keine statische Codeanalyse. (Das ist hier jetzt mehr oder weniger Zufall). Das kann böse Folgen haben. Daher immer gut Dokumentieren und gut aufpassen. Also zur Not viele Todo Kommentare wobei da in der Praxis Tools für eingesetzt werden, die dann genau aufschlüsseln: grobe Anforderungen, feinere Anforderungen und dann heruntergebrochene Tasks ... heisst je nach Methodik leicht anders aber grob fast immer ähnliche Strukturierung.
 
Zuletzt bearbeitet von einem Moderator:

LimDul

Top Contributor
ja das ist mir klar ... es ging mir um den Fehler und es war dem TE nicht klar warum ein Kommentar den Fehler dass keine Anweisung drin gestanden ist nicht behoben hat..


einem Compiler sollte es eig auch egal sein wenn drei ifs leer sind da die Syntax stimmt
was vielleicht die ganze Verwirrung für den TE erst ausgelöst hat
Du redest gerade wirr.

Der Compiler hat damit genau gar nix zu tun. Die Meldung kam von Checkstyle und das ist ein Werkzeug zur statischen Code-Analyse. Da ist es nicht ausgeschlossen, dass ein Kommentar diese Warnung behebt, sofern die Regel in Checkstyle das prüfen würde - was sie nicht tut. Aber es gibt keinen technischen Grund, dass ein Kommentar diese Warnung nicht beseitigen kann - nur einen fachlichen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ronny123 Erste Schritte Fehlermeldung Java Basics - Anfänger-Themen 1
F Fehlermeldung in Eclipse Java Basics - Anfänger-Themen 13
AllBlack Fehlermeldung Java Basics - Anfänger-Themen 19
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
Ostkreuz Fehlermeldung Java Basics - Anfänger-Themen 1
_so_far_away_ Fehlermeldung "Index 2 out of bounds for length 2" Java Basics - Anfänger-Themen 7
W Texteingabe - Bedeutung Fehlermeldung, Lösung? Java Basics - Anfänger-Themen 18
krgewb Fehlermeldung in web.xml Java Basics - Anfänger-Themen 4
W Warum diese Fehlermeldung? Java Basics - Anfänger-Themen 12
nbergmann Unverständliche Fehlermeldung Java Basics - Anfänger-Themen 56
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
J Fehlermeldung im Checkstyle Java Basics - Anfänger-Themen 11
S Fehlermeldung Java Basics - Anfänger-Themen 7
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
C Fehlermeldung Array zuweisen und printen Java Basics - Anfänger-Themen 22
J Fehlermeldung: A JNI error Java Basics - Anfänger-Themen 3
R Fehlermeldung aber WO liegt der Fehler? Java Basics - Anfänger-Themen 7
JavaClara Fehlermeldung bei split-Methode Java Basics - Anfänger-Themen 12
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
C Fehlermeldung InOut. Java Basics - Anfänger-Themen 7
B Methoden if-statement error, FX, Fehlermeldung Java Basics - Anfänger-Themen 6
A Fehlermeldung Java Basics - Anfänger-Themen 5
H Comparator Fehlermeldung Java Basics - Anfänger-Themen 5
D Folgende Fehlermeldung bei der Installation von JAVAFX Java Basics - Anfänger-Themen 1
M Java heap space Fehlermeldung beheben Java Basics - Anfänger-Themen 3
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
T Fehlermeldung beim Versuch, einen String einzulesen Java Basics - Anfänger-Themen 4
S Bitte Hilfe zu Fehlermeldung am Handy Java Basics - Anfänger-Themen 2
H fehlermeldung Java Basics - Anfänger-Themen 447
H fehlermeldung Java Basics - Anfänger-Themen 9
T Fehlermeldung beim Starten von FlashTool Java Basics - Anfänger-Themen 27
C Fehlermeldung mit Intger. Java Basics - Anfänger-Themen 3
A Fehlermeldung Java Basics - Anfänger-Themen 3
D Wie kann man eine solche Fehlermeldung abfangen Java Basics - Anfänger-Themen 4
H Fehlermeldung bei der Ausführung eines Compilierten PRGs Java Basics - Anfänger-Themen 9
N Fehlermeldung beim ausführen des Programmes.. Java Basics - Anfänger-Themen 3
x-tshainge Fehlermeldung Java Basics - Anfänger-Themen 2
M Erste Schritte NetBeans Fehlermeldung Java Basics - Anfänger-Themen 2
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
N Fehlermeldung bei Methode Java Basics - Anfänger-Themen 12
I String index out of range Fehlermeldung Java Basics - Anfänger-Themen 4
I Fehlermeldung bei Darstellung von Arrays Java Basics - Anfänger-Themen 2
S Variablen JLabel backImagePanel Fehlermeldung Java Basics - Anfänger-Themen 3
A checkstyle Fehlermeldung Java Basics - Anfänger-Themen 1
G Compiler-Fehler Fehlermeldung Java Basics - Anfänger-Themen 3
Pr0m3theus Fehlermeldung ArrayList add Java Basics - Anfänger-Themen 12
Arabicabohne Fehlermeldung bei Eclipse Java Basics - Anfänger-Themen 23
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
TheMenox Fehlermeldung / Arrays, Enhanced For Loops Java Basics - Anfänger-Themen 16
D Compiler-Fehler Anfänger Fehlermeldung Java Basics - Anfänger-Themen 3
Henri Fehlermeldung Java Basics - Anfänger-Themen 2
K Erste Schritte Fehlermeldung Java Basics - Anfänger-Themen 2
I Fehlermeldung: Java does not contain a main type Java Basics - Anfänger-Themen 1
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
J Bug? Seltsame Fehlermeldung Java Basics - Anfänger-Themen 7
J Fehlermeldung else without if Java Basics - Anfänger-Themen 5
J while(nst == 0) gibt Fehlermeldung Java Basics - Anfänger-Themen 4
L Fehlermeldung Java Basics - Anfänger-Themen 6
D Erste Schritte Fehlermeldung "Syntax error on token ";", { expected after this token" Java Basics - Anfänger-Themen 13
J Launcher Fehlermeldung Java Basics - Anfänger-Themen 0
A Fehlermeldung Unklar, google hilft auch nicht weiter Java Basics - Anfänger-Themen 2
H Compiler-Fehler Fehlermeldung Kompilier Java Basics - Anfänger-Themen 4
A Fehlermeldung Unklar. Java Basics - Anfänger-Themen 1
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
D Integer Fehlermeldung exception Java Basics - Anfänger-Themen 4
A Fehlermeldung beim aufruf der main Methode Java Basics - Anfänger-Themen 17
D Fehlermeldung beim Ausführen eines Java Programms Java Basics - Anfänger-Themen 4
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
D Fehlermeldung "com.element.JavaUpload.Manager" Java Basics - Anfänger-Themen 1
S Fehlermeldung bei format methode Java Basics - Anfänger-Themen 1
A Compiler-Fehler Fehlermeldung auf Mac Java Basics - Anfänger-Themen 3
K JDBC - Wie ist Fehlermeldung zu interpretieren Java Basics - Anfänger-Themen 3
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
N Fehlermeldung nicht nachvollziehbar Java Basics - Anfänger-Themen 5
S Class File Editor gibt beim Start der Programms die Fehlermeldung Source not found aus Java Basics - Anfänger-Themen 1
C addActionListener(this) - Fehlermeldung Java Basics - Anfänger-Themen 8
C Array List mit String vergleichen und Fehlermeldung ausgeben Java Basics - Anfänger-Themen 6
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
G Variablen Warum bekomme ich da eine Fehlermeldung? Java Basics - Anfänger-Themen 3
C GUI - SWT - Button-Fehlermeldung Java Basics - Anfänger-Themen 5
F Input/Output IOTools Fehlermeldung: cannot be resolved Java Basics - Anfänger-Themen 16
K Erste Schritte Datei gelöscht - nun Fehlermeldung Java Basics - Anfänger-Themen 2
S Fehlermeldung Java Basics - Anfänger-Themen 8
E Fehlermeldung und Fenster wird nicht mehr angezeigt Java Basics - Anfänger-Themen 12
E Fehlermeldung Java Basics - Anfänger-Themen 13
K Transparents Bild laden -> Fehlermeldung Java Basics - Anfänger-Themen 6
J Fehlermeldung reagieren Java Basics - Anfänger-Themen 10
F Array Fehlermeldung... Java Basics - Anfänger-Themen 2
B Fehlermeldung bei Klasse mit array Java Basics - Anfänger-Themen 3
L Erste Schritte Fehlermeldung bei Array-Programm Java Basics - Anfänger-Themen 4
G Fehlermeldung: A fatal error has been detected by the Java Runtime Environment Java Basics - Anfänger-Themen 7
Gugelhupf JDK installieren Fehlermeldung 1336 - Java SDK 7 Update 5 x64 Java Basics - Anfänger-Themen 4
K Fehlermeldung nach editor installation Java Basics - Anfänger-Themen 3
P Input/Output JOptionPane Fehlermeldung Catchen Java Basics - Anfänger-Themen 5
J Erste Schritte System.out.print (Fehlermeldung) Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben