Java-использование сканера и передача переменной другим методам - PullRequest
0 голосов
/ 13 января 2012

Я пытаюсь создать текстовый калькулятор. У меня есть основной класс и класс Calc. Класс calc - это место, где все будет происходить, и он будет вызываться в основном классе. Моя проблема - несколько переменных в моем классе calc. Это легче увидеть в коде.

    import java.util.Scanner;

public class Calc {
        String op;
    public void operation(String opt){
        System.out.println("What operation would you like to perform?");
        Scanner operation = new Scanner(System.in);
        op = opt;
        String op = operation.toString();
        getOp(op);
    }

    public String getOp(String op){
        return op;
    }

А позже в моем коде.

public void calculate(){
        operation(op);
        getNums(1,2);
        if(op == "Division"+"division"+"/"){
            double value = 1/2;
            System.out.println("Your answer is"+value);
        }
        if(op == "Multiplication"+"multiplication"+"*"){
            double value = 1*2;
            System.out.println("Your answer is"+value);
        }
        if(op == "Addition"+"addition"+"+"){
            double value = 1+2;
            System.out.println("Your answer is"+value);
        }
        if(op == "Subtraction"+"subtraction"+"-"){
            double value = 1/2;
            System.out.println("Your answer is"+value);
        }

    }

Моя проблема в том, что я не могу установить значение op со сканером, и я не знаю, были ли установлены значения моих чисел (1 и 2). Спасибо за любую помощь, спасибо.

Ответы [ 2 ]

1 голос
/ 01 марта 2012

FWIW, я бы использовал .nextInt вместо .toString. Это гарантирует, что он наберет номер, а затем передаст его в ваш магазин для условного использования.

Плюс, я думаю, вам было бы лучше использовать оператор switch в вычислениях, и в этом случае вы можете оставить его как .toString или изменить его на .next и передать символ или строку.

0 голосов
/ 13 января 2012

Я думаю, что в соответствии с предложением βнɛƨн Ǥʋяʋиɢ вы не должны вызывать операцию () в вашем классе Cal. если он просто запрашивает пользователя и принимает ввод, он должен быть в основном классе. Поскольку я не вижу сообщения об ошибке, поэтому я предполагаю, что одна из проблем, которую вы можете получить, заключается в том, что вы объявляете свою переменную op как единицу и запускаете другую локальную переменную op в своей функции opera (), чтобы перехватить ввод пользователя. Другое дело, не должен ли ваш объект Scanner вызывать метод nextLine () вместо toString () для захвата ввода пользователя. У меня нет моей компы, поэтому я не могу опубликовать какой-либо код, но, возможно, вы можете сначала попытаться изменить свой код и опубликовать какое-то сообщение об ошибке, чтобы оно было понятнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...