2017-05-07 3 views
2

Ich habe diesen Code in Java geschrieben, um einen sehr einfachen Rechner zu erstellen.Versuchen, einen Rechner in Java zu erstellen und diese Fehler zu bekommen: Wie repariere ich sie?

import java.util.Scanner; 

public class Addition { 

static void Addition() { 
    Scanner numberOne = new Scanner(System.in); 
    float x = numberOne.nextFloat(); 
    System.out.println("First Number: " + numberOne.nextLine()); 
    Scanner numberTwo = new Scanner(System.in); 
    float y = numberTwo.nextFloat(); 
    System.out.println("Second Number: " + numberTwo.nextLine()); 
    float sum = x + y; 
    System.out.println(sum);  
    } 
} 

public class Subtraction { 

static void Subtraction() { 
    Scanner numberOne = new Scanner(System.in); 
    float x = numberOne.nextFloat(); 
    System.out.println("First Number: " + numberOne.nextLine()); 
    Scanner numberTwo = new Scanner(System.in); 
    float y = numberTwo.nextFloat(); 
    System.out.println("Second Number: " + numberTwo.nextLine()); 
    float difference = x - y; 
    System.out.println(difference); 
    } 
} 

public class Multiplication { 

static void Multiplication() { 
    Scanner numberOne = new Scanner(System.in); 
    float x = numberOne.nextFloat(); 
    System.out.println("First Number: " + numberOne.nextLine()); 
    Scanner numberTwo = new Scanner(System.in); 
    float y = numberTwo.nextFloat(); 
    System.out.println("Second Number: " + numberTwo.nextLine()); 
    float product = x + y; 
    System.out.println(product);  
    } 
} 

public class Division { 

static void Addition() { 
    Scanner numberOne = new Scanner(System.in); 
    float x = numberOne.nextFloat(); 
    System.out.println("First Number: " + numberOne.nextLine()); 
    Scanner numberTwo = new Scanner(System.in); 
    float y = numberTwo.nextFloat(); 
    System.out.println("Second Number: " + numberTwo.nextLine()); 
    float quotient = x + y; 
    System.out.println(quotient); 
} 
} 

public class Calculate { 
    public static void main(String[] args) { 
    System.out.println("Calculator"); 
    System.out.println("Choose an operation:"); 
    System.out.println("Addition"); 
    System.out.println("Subtraction"); 
    System.out.println("Multiplication"); 
    System.out.println("Division"); 
    Scanner input = new Scanner(System.in); 
    String choice = input.nextLine(); 
    if(choice.equals("Addition") { 
     Addition(); 
    } 
    else if(choice.equals("Subtraction") { 
     Subtraction(); 
    } 
    else if(choice.equals("Mutliplication") { 
     Mutliplication(); 
    } 
    else if(choice.equals("Division"){ 
     Division(); 
    } 
    else { 
     System.out.println("That wasn't a valid input. Please try again."); 
    } 
} 
} 

Allerdings, wenn ich es zu laufen versuchte, bekam ich diese Fehlermeldung:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
Syntax error on token ")",) expected after this token 
The method Addition() is undefined for the type Calculate 
Syntax error on token ")",) expected after this token 
The method Subtraction() is undefined for the type Calculate 
Syntax error on token ")",) expected after this token 
The method Mutliplication() is undefined for the type Calculate 
Syntax error on token ")",) expected after this token 
The method Division() is undefined for the type Calculate 

at Calculate.main(Calculate.java:14) 

Ich bin ein Anfänger in Java und ich bin mir nicht ganz sicher, was die Fehlermeldung bedeutet. Kann mir jemand erklären, was es bedeutet und wie ich es repariere?

+0

Vielen Dank für Ihre Hilfe. Ich habe die Änderungen vorgenommen und jetzt funktioniert das Programm. Es gibt nur noch eine Sache, die ich machen möchte. Wenn der Benutzer eine ungültige Eingabe gibt, möchte ich, dass er es erneut versuchen kann, ohne jedoch die gesamte Frage zu wiederholen. Als ob sie etwas anderes als diese vier Wahlmöglichkeiten geben, möchte ich, dass sie einfach wieder antworten können und dies wiederholen, bis sie etwas antworten, was eine gültige Eingabe ist. –

Antwort

1

Sie haben ein paar Probleme in Ihrem Code bekommen.

Erstens benötigen Sie keine separate Klasse für jede Methode. Stellen Sie alle Methoden in derselben Klasse zusammen. Auf diese Weise müssen Sie beim Aufrufen der einzelnen Methoden keinen Klassennamen angeben.

Zweitens, Sie vermissen einige ) Zeichen in Ihren if Aussagen. Stellen Sie sicher, dass jedes ( Zeichen eine übereinstimmende ) hat. Zum Beispiel if (choice.equals("Addition")) {.

Drittens scheinen Ihre Multiplikations- und Divisionsmethoden tatsächlich Addition durchzuführen. Verwenden Sie *, um zwei Zahlen zu multiplizieren, und /, um sie zu teilen.

Viertens verlieren Sie einige dieser Anrufe an nextLine() und nur den Wert, den Sie bereits abgerufen haben. So sollte zum Beispiel System.out.println("First Number: " + numberOne.nextLine());System.out.println("First Number: " + x); und ähnlich viele Male in Ihrem Code sein.

1

Sie haben Ihre Addition Methode in Ihrer Klasse Addition definiert.

  1. import static Addition.Addtion();

  2. ändern Addition()-Addition.Addition().

Sie müssen dann das gleiche für Ihre anderen Methoden tun. Ihnen fehlt auch ein ) auf jedem Ihrer choise Tests.

if(choice.equals("Addition")) { // <-- count the open and close parens. 
0

In Ihrem Calculate-Klassenhauptteil schließen Sie Ihre if-Anweisungsheader nicht ordnungsgemäß.

if(choice.equals("Addition") { 

sollte

if(choice.equals("Addition")) { // notice the second closing parenthesee 

Sie eine Schließung parenthesee Sie haben für jeden offen man setzen muss sein.

0

Sie hatten einen Syntaxfehler, bei dem Sie die notwendigen Klammern für die if-Anweisungen nicht hinzugefügt haben.

if(choice.equals("Addition") <---- missing parenthesis { 
    Addition(); 
} 

Lösung

if(choice.equals("Addition")) { 
    Addition(); 
} 
else if(choice.equals("Subtraction")) { 
    Subtraction(); 
} 
else if(choice.equals("Mutliplication")) { 
    Mutliplication(); 
} 
else if(choice.equals("Division")){ 
    Division(); 
} 
else { 
    System.out.println("That wasn't a valid input. Please try again."); 
} 
0

Sie platzieren die Methoden wie Addition und Subtraktion in ihren eigenen Klassen, so dass Main nicht weiß, wie sie aufgerufen werden.

Ich würde sagen, schrotte die öffentlichen Klassen vor jeder mathematischen Methode. ändern Ihre auch

System.out.println("Second Number: " + numberTwo.nextLine()); 

zu so etwas wie:

System.out.println("Second Number: " + y); 

Wenn Sie es wollen, um tatsächlich ausspucken die entsprechenden Zahlen.

Verwandte Themen