Compiler-Fehler Fehler beim Ausführen des Codes

Mechatronix

Mitglied
Hallo,
ich bin ziemlich neu und wollte einen kleinen Taschenrechner programmieren.
Als ich aber den untenstehenden Code versuchte in Visual Studio Code auszuführen,
hat es nicht geklappt. Es zeigte mir im Code keine Fehler an aber im Terminal die folgenden Fehler an:
Java:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
        next cannot be resolved or is not a field
        Duplicate local variable scan
        Syntax error, insert ")" to complete ClassInstanceCreationExpression
        Syntax error, insert ";" to complete BlockStatements
        Syste cannot be resolved to a variable
        Syntax error, insert ":: IdentifierOrNew" to complete ReferenceExpression
        Syntax error, insert ";" to complete LocalVariableDeclarationStatement
        nextDou cannot be resolved or is not a field
        Syntax error, insert ":: IdentifierOrNew" to complete ReferenceExpression
        Syntax error, insert ";" to complete LocalVariableDeclarationStatement
        nextDou cannot be resolved or is not a field
        Syntax error, insert ":: IdentifierOrNew" to complete ReferenceExpression
        Syntax error, insert ";" to complete LocalVariableDeclarationStatement
        sum cannot be resolved to a variable
        Duplicate local variable scan
        Duplicate local variable scan
        fak cannot be resolved to a variable
        Syntax error on token "tor1", delete this token
        Duplicate local variable scan

        at Rechner.main(Rechner.java:7)

Kann mir bitte irgend jemand helfen??

Danke!!🙂

P.S. Der Code:
Java:
public class Rechner{
    public static void main(String[] args){

        // Eingabe der Rechenart
        final java.util.Scanner scan = new java.util.Scanner(System.in);
        System.out.print("Geben sie an was ausgefürt werden soll('plus','minus','geteilt','mal'): ");
        final var str = scan.next;
        scan.close();

        // Ausgabe der gewälten Rechenart
        System.out.println("Sie haben " + str + " gewählt.");

        // Abfrage Plus
        if (str.equals("plus")) {
            final java.util.Scanner scan = new java.util.Scanner(Syste
            System.out.print("Geben sie die erste zu addierende Zahl an: ");
            final double summand1 = scan.nextDou
            System.out.print("Geben sie die zweite zu addierende Zahl an: ");
            final double summand2 = scan.nextDou
            scan.close();

            final double summe = summand1 + sum
            System.out.println("Das ergebnis der Addition ist: " + summe);
        }

        // Abfrage Minus
        if (str.equals("minus")) {
            final java.util.Scanner scan = new java.util.Scanner(System.in);
            System.out.print("Geben sie die erste zu suptrahierende Zahl an: ");
            final double minuent = scan.nextDouble();
            System.out.print("Geben sie die zweite zu suptrahierende Zahl an: ");
            final double suptrahend = scan.nextDouble();
            scan.close();

            final double differenz = minuent - suptrahend;
            System.out.println("Das ergebnis der Suptrktion ist: " + differenz);
        }

        // Abfrage Mal
        if (str.equals("mal")) {
            final java.util.Scanner scan = new java.util.Scanner(System.in);
            System.out.print("Geben sie die erste zu multiplizierende Zahl an: ");
            final double faktor1 = scan.nextDouble();
            System.out.print("Geben sie die zweite zu multiplizierende Zahl an: ");
            final double faktor2 = scan.nextDouble();
            scan.close();

            final double produckt = fak tor1 *faktor2;
            System.out.println("Das ergebnis der Multiplikation ist: " + produckt);
        }

        // Abfrage Geteilt
        if (str.equals("geteilt")) {
            final java.util.Scanner scan = new java.util.Scanner(System.in);
            System.out.print("Geben sie die erste zu dividierende Zahl an: ");
            final double dividend = scan.nextDouble();
            System.out.print("Geben sie die zweite zu dividierende Zahl an: ");
            final double divisor = scan.nextDouble();
            scan.close();

            final double qoutient = dividend / divisor;
            System.out.println("Das ergebnis der Division ist: " + qoutient);
        }

    }
}
 
Zuletzt bearbeitet von einem Moderator:
Da fehlt eine Menge an Zeilenenden
Java:
       final var str = scan.next;
// Soll (vermulich)
       final var str = scan.next();

Im Plus Zweig sind die Zeilen auch abgeschnitten, da fehlen immer ein paar Zeichen am Ende der zeile
 
Bei Abfrage Plus fehlt die Hälfte, vergleiche es doch mal den anderen Abfragen. Abgesehen davon: Du brauchst nur einen Scanner und Scanner von System.in schließt man typischer Weise nicht.

Java:
final var str = scan.next;

next ist eine Methode, kein Feld. Bitte mit () aufrufen.

PS.: Es heißt Subtraktion
 
Danke euch allen hier nochmal der Code:
Java:
public class Rechner{
    public static void main(String[] args){

        // Eingabe der Rechenart
        final java.util.Scanner scan = new java.util.Scanner(System.in);
        System.out.print("Geben sie an was ausgefürt werden soll('plus','minus','geteilt','mal'): ");
        final var str = scan.next;

        // Ausgabe der gewälten Rechenart
        System.out.println("Sie haben " + str + " gewählt.");

        // Abfrage Plus
        if (str.equals("plus")) {
            System.out.print("Geben sie die erste zu addierende Zahl an: ");
            final double summand1 = scan.nextDouble();
            System.out.print("Geben sie die zweite zu addierende Zahl an: ");
            final double summand2 = scan.nextDouble();

            final double summe = summand1 + sum
            System.out.println("Das ergebnis der Addition ist: " + summe);
        }

        // Abfrage Minus
        if (str.equals("minus")) {
            System.out.print("Geben sie die erste zu subtrahierende Zahl an: ");
            final double minuent = scan.nextDouble();
            System.out.print("Geben sie die zweite zu subtrahierende Zahl an: ");
            final double subtrahend = scan.nextDouble();

            final double differenz = minuent - subtrahend;
            System.out.println("Das ergebnis der Subtrktion ist: " + differenz);
        }

        // Abfrage Mal
        if (str.equals("mal")) {
            System.out.print("Geben sie die erste zu multiplizierende Zahl an: ");
            final double faktor1 = scan.nextDouble();
            System.out.print("Geben sie die zweite zu multiplizierende Zahl an: ");
            final double faktor2 = scan.nextDouble();

            final double produckt = fak tor1 *faktor2;
            System.out.println("Das ergebnis der Multiplikation ist: " + produckt);
        }

        // Abfrage Geteilt
        if (str.equals("geteilt")) {
            System.out.print("Geben sie die erste zu dividierende Zahl an: ");
            final double dividend = scan.nextDouble();
            System.out.print("Geben sie die zweite zu dividierende Zahl an: ");
            final double divisor = scan.nextDouble();

            final double qoutient = dividend / divisor;
            System.out.println("Das ergebnis der Division ist: " + qoutient);
        }

    }
}

Die errors sind:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Duplicate local variable scan
Syntax error, insert ")" to complete ClassInstanceCreationExpression
Syntax error, insert ";" to complete BlockStatements
Syste cannot be resolved to a variable
Syntax error, insert ":: IdentifierOrNew" to complete ReferenceExpression
Syntax error, insert ";" to complete LocalVariableDeclarationStatement
sum cannot be resolved to a variable
Duplicate local variable scan
Duplicate local variable scan
fak cannot be resolved to a variable
Syntax error on token "tor1", delete this token
Duplicate local variable scan


at Rechner.main(Rechner.java:15)
 
Bei Abfrage Plus fehlt die Hälfte, vergleiche es doch mal den anderen Abfragen. Abgesehen davon: Du brauchst nur einen Scanner und Scanner von System.in schließt man typischer Weise nicht.
Da ist die Antwort. Das Die IDE dir keine Fehler anzeigt, wage ich auch mal zu bezweifeln - starte die sonst mal neu. Ansonsten steht in der Exception die Zeile drin, dann schau dir die Zeile mal an
 
Da fehlt eine Menge an Zeilenenden
Java:
       final var str = scan.next;
// Soll (vermulich)
       final var str = scan.next();

Im Plus Zweig sind die Zeilen auch abgeschnitten, da fehlen immer ein paar Zeichen am Ende der zeile
- Das hast du in deinem Code weiterhin nicht.
- In der Summenzeile fehlt weiterhin ein Semikolon.
- faktor1 hat weiterhin das Leerzeichen (das sieht man im Screen von @krgewb gut)
- Auf deine Rechtschreibung gehe ich mal nicht weiter ein 😀
 
Danke euch allen ich habe es geschafft!!😊
Tschuldige bin sehr schusselig gewesen.
Aber bin sehr neu hier. und kann bisher nur HTML und habe meine eigene Website(Was nicht viele in der 6. Klasse von sich behaupten können).
Hier der Fertige Code:
Java:
public class Rechner{
    public static void main(String[] args){

        // Eingabe der Rechenart
        final java.util.Scanner scan = new java.util.Scanner(System.in);
        System.out.print("Geben sie an was ausgefürt werden soll('plus','minus','geteilt','mal'): ");
        final var str = scan.next();

        // Ausgabe der gewälten Rechenart
        System.out.println("Sie haben " + str + " gewählt.");

        // Abfrage Plus
        if (str.equals("plus")) {
            System.out.print("Geben sie die erste zu addierende Zahl an: ");
            final double summand1 = scan.nextDouble();
            System.out.print("Geben sie die zweite zu addierende Zahl an: ");
            final double summand2 = scan.nextDouble();
            scan.close();

            final double summe = summand1 + summand2;
            System.out.println("Das ergebnis der Addition ist: " + summe);
        }

        // Abfrage Minus
        if (str.equals("minus")) {
            System.out.print("Geben sie die erste zu subtrahierende Zahl an: ");
            final double minuent = scan.nextDouble();
            System.out.print("Geben sie die zweite zu subtrahierende Zahl an: ");
            final double subtrahend = scan.nextDouble();
            scan.close();

            final double differenz = minuent - subtrahend;
            System.out.println("Das ergebnis der Subtrktion ist: " + differenz);
        }

        // Abfrage Mal
        if (str.equals("mal")) {
            System.out.print("Geben sie die erste zu multiplizierende Zahl an: ");
            final double faktor1 = scan.nextDouble();
            System.out.print("Geben sie die zweite zu multiplizierende Zahl an: ");
            final double faktor2 = scan.nextDouble();
            scan.close();

            final double produckt = faktor1 *faktor2;
            System.out.println("Das ergebnis der Multiplikation ist: " + produckt);
        }

        // Abfrage Geteilt
        if (str.equals("geteilt")) {
            System.out.print("Geben sie die erste zu dividierende Zahl an: ");
            final double dividend = scan.nextDouble();
            System.out.print("Geben sie die zweite zu dividierende Zahl an: ");
            final double divisor = scan.nextDouble();
            scan.close();

            final double qoutient = dividend / divisor;
            System.out.println("Das ergebnis der Division ist: " + qoutient);
        }

    }
}

Danke und bis bald😃
 
Einen Tipp an @Mechatronix : Du solltest keine Robots auf "deiner" Seite zulassen, weil sonst könnte ich jetzt versuchen, die URL anhand der Texte zu er-googlen.

Zweitens ist es zwar bemerkenswert, dass du in der 6. Klasse bereits programmieren kannst, und eventuell sogar Klassen übersprungen hast, dennoch frage ich mich, warum es nötig ist, dass du in deinem Alter bereits eine eigene Homepage brauchst.

Wer oder was soll dadurch worauf aufmerksam gemacht werden? Firmen können es nicht sein, denn die stellen keine Kinder und Jugendlichen ein...

Ich bin selber hochbegabt, würde aber immer darauf aufpassen, meinen Namen nicht publik zu machen. Das Internet ist sehr träge in puncto Sachen vergessen.
 
Zu berücksichtigen ist aber auch noch, dass sich die hiesigen Gegebenheiten geändert haben. Ich will nicht sagen, dass es jetzt relativ gesehen mehr "dumme" Fragen gibt als sonst, aber die Art und Weise und der Ton, wie Fragen gestellt werden, ist "rauer", ungezwungener oder weniger vornehm geworden. Ich denke, das liegt am digitalen Zeitalter (facebook, instagram und Co). 😀
 
[...] aber die Art und Weise und der Ton, wie Fragen gestellt werden, ist "rauer", ungezwungener oder weniger vornehm geworden. Ich denke, das liegt am digitalen Zeitalter (facebook, instagram und Co).

Ich glaube so viel rauer ist der Ton gar nicht geworden. Es fällt nur mehr auf, weil diese jetzt die Möglichkeit haben sich im Internet gehör zu verschaffen. Also ja ich stimme dir zu dass es durch das Internet rauer geworden ist, aber es liegt nicht daran dass die Leute toxischer geworden sind, sondern dass man von den Idioten damals nur wenig mitbekommen hat. Die sind nun einfach die lauteren und sind daher präsenter in der Wahrnehmung.
 
Es fällt nur mehr auf, weil diese jetzt die Möglichkeit haben sich im Internet gehör zu verschaffen.
Naja, eine breitflächige Möglichkeit, sich im Internet Gehör zu verschaffen, gab es vor 5 Jahren auch schon - da warst du noch in der Windelphase... (ist nicht bös gemeint, hab nur zurückgerechnet).
Insofern greift diese Argumentation, jetzt hätten die "Dummköpfe" endlich auch einen Internetzugang, nicht. Eher im Gegenteil - denn ansonsten würden wir ja jeden Tag mit komischen Fragen überschwemmt werden - die Forenfrequentierung hat im Allgemeinen nachgelassen.
Woran das liegen mag, kann ich nicht genau sagen. Wahrscheinlich hat sich das Meiste nach Stackoverflow verlagert.
Ich wollte damit aber nicht zu Ausdruck bringen, dass deine Frage in irgendeiner Form unfreundlich gewesen wäre. Sondern die Diskussion hat sich nur in diese Richtung entwickelt.
 
Sondern die Diskussion hat sich nur in diese Richtung entwickelt.
Ich möchte dich freundlich darauf hinweisen, dass das nur passiert ist, weil jemand zwischen den Zeilen behauptet hat 98% der anderen Forennutzer hier seien dümmer als er selbst. Vorher war alles fein. Ich gebe dir Recht, dein Ton ist besser geworden, die Aussagen nicht.
 

Zurück
Oben