простой калькулятор с выключателем - PullRequest
0 голосов
/ 30 января 2020

У меня проблема. В классе мы должны сделать простой калькулятор, и моя проблема в том, что я хочу написать число, затем оператор, затем снова число. Почему-то мой код не работает. Я могу ввести первый номер, но затем моя программа закрывается: / Почему это так? Это потому, что я использовал строку типа данных?

Спасибо всем заранее !!

Вот мой код:

import java.util.Scanner; 
import java.math.*;
public class Calculatrice 
{
    public static void main(String args[]) 
    {
        double num1;
        Scanner keyb = new Scanner(System.in);
        System.out.println("Calculette Simple");
        System.out.print("Valeur actuelle: ");
        num1 = keyb.nextDouble();

        System.out.print("Entrez un operateur: ");
        String i;
        i = keyb.nextLine();
        double result = 0;

        switch (i)
        {
            case "+":
            result = result + num1;
            break;
            case "-":
            result = result - num1;
            break;
            case "*":
            result = result * num1;
            break;
            case "/":
            result = result / num1;
            break;
            case "sqrt":
            result = Math.sqrt(result);
            break;
            case "c":
            result = 0;
            break;
            case "x":
            System.exit(0);
            break;
            case "^":
            result = Math.pow(result,num1);
            break;
            default:
            System.out.println("Valeurs acceptees: +, -, *, /, ^, sqrt, c, x");
            break;

        }
        keyb.close();
}
    }

Ответы [ 3 ]

0 голосов
/ 30 января 2020

вам нужно немного l oop с условием выхода (полагаю, на входе 'x') что-то вроде

while (!"x".equals(i)) {
   switch (i)
   ...
}
0 голосов
/ 30 января 2020

Программа принимает значение обоих чисел (введенных пользователем), а затем пользователю предлагается ввести операцию (+, -, * и /), исходя из того, что программа ввода выполняет выбранную операцию над введенными числами, используя корпус переключателя.

import java.util.Scanner;

public class JavaExample {

    public static void main(String[] args) {

        double num1, num2;
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter first number:");

        /* We are using data type double so that user
         * can enter integer as well as floating point
         * value
         */
        num1 = scanner.nextDouble();
        System.out.print("Enter second number:");
        num2 = scanner.nextDouble();

        System.out.print("Enter an operator (+, -, *, /): ");
        char operator = scanner.next().charAt(0);

        scanner.close();
        double output;

        switch(operator)
        {
            case '+':
                output = num1 + num2;
                break;

            case '-':
                output = num1 - num2;
                break;

            case '*':
                output = num1 * num2;
                break;

            case '/':
                output = num1 / num2;
                break;

            /* If user enters any other operator or char apart from
             * +, -, * and /, then display an error message to user
             * 
             */
            default:
                System.out.printf("You have entered wrong operator");
                return;
        }

        System.out.println(num1+" "+operator+" "+num2+": "+output);
    }
}
0 голосов
/ 30 января 2020

Вам нужно все oop: вам нужно читать данные из командной строки, пока условие не будет проверено, чтобы прочитать более одной строки (число, оператор или что вы хотите). Затем попробуйте что-то вроде этого:

// your initialization of scanner
i = keyb.nextLine();
double result = 0;
while (!i.equals("end")) { // I use this as exit condition, but you can use whatever you want
    switch (i) {
        case "+":
            result = result + num1;
            break;
        case "-":
            result = result - num1;
            break;
        case "*":
            result = result * num1;
            break;
        case "/":
            result = result / num1;
            break;
        case "sqrt":
            result = Math.sqrt(result);
            break;
        case "c":
            result = 0;
            break;
        case "x":
            System.exit(0);
            break;
        case "^":
            result = Math.pow(result, num1);
        default:
            System.out.println("Valeurs acceptees: +, -, *, /, ^, sqrt, c, x");

    }
}
// close scanner

...