Пытаюсь создать калькулятор на 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, и я не совсем уверен, что означает сообщение об ошибке. Может кто-нибудь объяснить мне, что это значит и как я это исправляю?
5 ответов:
У вас есть несколько проблем в коде.
Во-первых, вам не нужен отдельный класс для каждого метода. Просто поместите все методы вместе в один класс. Таким образом, вам не нужно будет указывать имя класса при вызове каждого метода.
Во-вторых, вы пропускаете некоторые символы)в своих операторахif. Убедитесь, что каждому символу(соответствует символ). Например,if (choice.equals("Addition")) {.В-третьих, ваши методы умножения и деления на самом деле кажутся делаете дополнение. Используйте
В-четвертых, потеряйте некоторые из этих вызовов в*для умножения двух чисел и/для их деления.nextLine()и просто выведите значение, которое вы уже получили. Так, например,System.out.println("First Number: " + numberOne.nextLine());должно бытьSystem.out.println("First Number: " + x);и аналогично много раз в вашем коде.
Вы определили свой метод
Additionв классе с именемAddition.Затем вам нужно сделать то же самое для других ваших методов. Вы также пропускаете a
import static Addition.Addtion();Измените
Addition()наAddition.Addition().)на каждом из ваших тестов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