Ghostdragon777 Ответов: 2

Вы знаете, почему мой калькулятор java не работает


Недавно я начал изучать java, а сегодня попробовал сделать калькулятор. Когда я запускаю код и говорю сложить, вычесть, умножить или разделить, он всегда выходит с "это неправильный оператор". Пожалуйста, постарайтесь быть конкретным... вот код (я использую IDE netbeans).

Calculator.java

package calculator;
import java.util.Scanner;

public class Calculator {
    
    
    
    public static void main(String[] args) {
        
        String operator;
        
        System.out.println("Would you like to add, subtract, multiply, or divide");
        Scanner choiceOP = new Scanner(System.in);
        String choice = choiceOP.nextLine();
        
        //for a testing purpose... delete after completion
        System.out.println(choice);
        
        methods method = new methods();
        
        if (choice == "add"){
            operator = "add";
            
            System.out.println("Choose your first number to " + operator);
            Scanner numScan = new Scanner(System.in);
            int num1 = numScan.nextInt();
            System.out.println("Choose your second number to " + operator);
            Scanner numScan2 = new Scanner(System.in);
            int num2 = numScan.nextInt();
            
            method.add(num1, num2);
        } else if (choice == "subtract"){
            operator = "subtract";
            
            System.out.println("Choose your first number to " + operator);
            Scanner numScan = new Scanner(System.in);
            int num1 = numScan.nextInt();
            System.out.println("Choose your second number to " + operator);
            Scanner numScan2 = new Scanner(System.in);
            int num2 = numScan.nextInt();
            
            method.subtract(num1, num2);
        } else if (choice == "multiply"){
            operator = "multiply";
            
            System.out.println("Choose your first number to " + operator);
            Scanner numScan = new Scanner(System.in);
            int num1 = numScan.nextInt();
            System.out.println("Choose your second number to " + operator);
            Scanner numScan2 = new Scanner(System.in);
            int num2 = numScan.nextInt();
            
            method.multiply(num1, num2);
        } else if (choice == "divide"){
            operator = "divide";
            
            System.out.println("Choose your first number to " + operator);
            Scanner numScan = new Scanner(System.in);
            int num1 = numScan.nextInt();
            System.out.println("Choose your second number to " + operator);
            Scanner numScan2 = new Scanner(System.in);
            int num2 = numScan.nextInt();
            
            method.divide(num1, num2);
        } else{
            System.out.println("That is not a correct operator");
        }
        
    }
}


Methods.java

package calculator;

public class methods {
    
    public void add(int num1, int num2){
        double answer = num1 + num2;
        System.out.println("The answer is " + answer);
    }
    public void subtract(int num1, int num2){
        double answer = num1 - num2;
        System.out.println("The answer is " + answer);
    }
    public void multiply(int num1, int num2){
        double answer = num1 * num2;
        System.out.println("The answer is " + answer);
    }
    public void divide(int num1, int num2){
        double answer = num1 / num2;
        System.out.println("The answer is " + answer);
    }
    
}


Заранее спасибо!!

Что я уже пробовал:

Я перепробовал все, что мог, в том числе и поискать его.

2 Ответов

Рейтинг:
7

Garth J Lancaster

ну, прошло уже некоторое время с тех пор, как я делал java, но я довольно уверен в нескольких вещах

а) Netbeans позволяет вам шагать через ваш код (отладка) - поверьте мне, это хороший навык для изучения, и позволяет вам видеть, что содержат ваши переменные (например)

Б) если ваш код полностью находится в конце, то не кажется ли вам, что проверка этого

Scanner choiceOP = new Scanner(System.in);
String choice = choiceOP.nextLine();

//for a testing purpose... delete after completion
System.out.println(choice);


стоит - ли система.из.запросы, отображать добавлять или вычитать и т. д. на консоли .. если это так, то

в) Возможно, вам придется просмотреть сравнение строк в java

т.е.
choice == "add"
.- вы уверены, что именно так можно сравнивать строки ? в то время как его "законный", то есть компилятор позволяет вам это делать, на самом деле он не делает то, что вы хотите - так что, немного почитав, посмотрите Java:==,. equals (), compareTo () и compare()[^] например, и я почти уверен, что вы должны понять это

if (choice.equals( "add")){
вероятно, это то, что вы хотите-попробуйте это только на одном из сравнений в качестве начала, чтобы доказать это


Ghostdragon777

Thx за помощь

Рейтинг:
1

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.

Значение choice не распознается как ожидаемый оператор.
Используйте отладчик для запуска программы построчно и просмотра значения choice по мере запуска программы.