Почему дополнение не будет работать в моем калькуляторе консоли Java? И как сделать так, чтобы команда "выход" для выхода из программы всегда работала?

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

package javaapplication59;

import java.util.Scanner;

public class JavaApplication59 {

public static void main(String[] args) {
    System.out.println("This is a calculator of singular expressions.");
    calculator();

}

public static void calculator() {
    System.out.println("Enter an expression, or type \"quit\" to exit.\n");
    Scanner kbd;
    kbd = new Scanner(System.in);
    System.out.println();
    String text = kbd.nextLine();
    while (!text.equalsIgnoreCase("quit")) {
        Scanner tokens = new Scanner(text);
        if (tokens.hasNextInt()) {
            twoOperand(tokens);
        } else {
            oneOperand();
        }
    }

    System.out.println("Farewell");
    System.exit(0);
}

public static void twoOperand(Scanner tokens) {
    int firstNum = tokens.nextInt();
    String operator = tokens.next();
    int secondNum = 0;
    if (tokens.hasNextInt()) {
        secondNum = tokens.nextInt();
    } else {
        System.out.println("Error, not valid expression");
        calculator();
    }
    while (tokens.next().contains("+")) {
        addition();
    }
    while (tokens.next().contains("-")) {
        subtraction();
    }
    while (tokens.next().contains("*")) {
        multiplication();
    }
    while (tokens.next().contains("/")) {
        division();
    }
    while (tokens.next().contains("%")) {
        modulus();
    }
    while (tokens.next().contains("^")) {
        exponentiation();
    }
}

public static void oneOperand() {
}

public static void addition() {
    Scanner tokens;
    tokens = new Scanner(System.in);
    String name = tokens.next();
    int sum = 0;
    while (tokens.hasNextInt()) {
        int num = tokens.nextInt();
        sum += num;
        System.out.println(sum);
        calculator();
    }
}
}

1 ответ

Это быстро составленная версия того, что вы ищете, с функциональным сложением и умножением. Таким образом, вы выбираете оперу, нажимаете ввод, выбираете int для выполнения, вводите, выбираете следующий, вводите и т. Д. С промежуточными результатами. Также введите выход в любое время, чтобы выйти. Изменить по своему вкусу. Удачи.:)

import java.util.Scanner;

public class Calculator {
public static void main(String[] args) {

    System.out.println("This is a calculator:");
    calc();

}
public static void calc(){

    System.out.println("Press *,/,+,- to perform op on following ints:");
    Scanner sc = new Scanner(System.in);
    String opString = sc.nextLine();

    if(opString.equalsIgnoreCase("quit")){
        System.out.println("Calculator quit!");
        sc.close();
        return;
    }
    switch (opString) {
        case "*": multiplication();
        break;
        case "/": division();
        break;
        case "+": addition();
        break;
        case "-": subtraction();
    }
}

public static int multiplication(){
    Scanner sc = new Scanner(System.in);
    int op1 = 1, op2;
    while (sc.hasNextInt()){
        op2 = sc.nextInt();
        op1 *= op2;
        System.out.println("= " + op1);
    }
    sc.close();
    return op1;
}
public static int division(){
    return 0;
}
public static int addition(){
    Scanner sc = new Scanner(System.in);
    int op1 = 0, op2;
    while (sc.hasNextInt()){
        op2 = sc.nextInt();
        op1 += op2;
        System.out.println("= " + op1);
    }
    sc.close();
    return op1;

}
public static int subtraction(){
    return 0;
}

}

Другие вопросы по тегам