Пытаюсь создать калькулятор на Java и получаю такие ошибки: как их исправить?



Я написал этот код на Java, чтобы создать очень простой калькулятор.



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.");
}
}
}


Однако, когда я попытался запустить его, я получил следующее сообщение об ошибке:



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)


Я новичок в Java, и я не совсем уверен, что означает сообщение об ошибке. Может кто-нибудь объяснить мне, что это значит и как я это исправляю?

939   5  

5 ответов:

У вас есть несколько проблем в коде.

Во-первых, вам не нужен отдельный класс для каждого метода. Просто поместите все методы вместе в один класс. Таким образом, вам не нужно будет указывать имя класса при вызове каждого метода.

Во-вторых, вы пропускаете некоторые символы ) в своих операторах if. Убедитесь, что каждому символу ( соответствует символ ). Например, if (choice.equals("Addition")) {.

В-третьих, ваши методы умножения и деления на самом деле кажутся делаете дополнение. Используйте * для умножения двух чисел и / для их деления.

В-четвертых, потеряйте некоторые из этих вызовов в nextLine() и просто выведите значение, которое вы уже получили. Так, например, System.out.println("First Number: " + numberOne.nextLine()); должно быть System.out.println("First Number: " + x); и аналогично много раз в вашем коде.

Вы определили свой метод Addition в классе с именем Addition.

  1. import static Addition.Addtion();

  2. Измените Addition() на Addition.Addition().

Затем вам нужно сделать то же самое для других ваших методов. Вы также пропускаете a ) на каждом из ваших тестов choise.
if(choice.equals("Addition")) { // <-- count the open and close parens.

В теле класса Calculate вы неправильно закрываете заголовки инструкций if.

if(choice.equals("Addition") {

Должно быть

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

Вы должны поставить закрывающую скобку для каждого открытого у вас есть.

У вас была синтаксическая ошибка, когда вы не добавили необходимую закрывающую скобку для операторов if.

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

Решение

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.");
}

Вы размещаете такие методы, как сложение и вычитание, в их собственных классах, поэтому Main не знает, как их вызвать.

Я бы сказал, выбросить открытые классы, предшествующие каждому математическому методу. Также измените свой

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

К чему-то вроде:

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

Если вы хотите, чтобы он действительно выплюнул соответствующие числа.

Comments

    Ничего не найдено.