如何循环此switch语句?

时间:2018-06-04 01:07:53

标签: java loops switch-statement

我正在用Java制作科学计算器程序,我得到了程序,用switch语句得到我需要的答案。
但我也需要循环语句来循环,我遇到了很多问题 任何人都可以帮助我吗?

这是代码:

import java.util.Scanner;
import java.lang.Math;
import static java.lang.Math.log10;

public class Main {

    public static void main(String[] args) {
        int opt = 0;
        int counter = 0;
        double firstOperand = 0;
        double secondOperand = 0;
        double sumOfcalculations = 0;
        double result = 0;
        Scanner sc = new Scanner(System.in);

        System.out.println("Current Result: " + sumOfcalculations);
        System.out.println(" ");
        System.out.println("Calculator Menu");
        System.out.println("---------------");
        System.out.println("0. Exit Program");
        System.out.println("1. Addition");
        System.out.println("2. Subtraction");
        System.out.println("3. Multiplication");
        System.out.println("4. Division");
        System.out.println("5. Exponentiation");
        System.out.println("6. Logarithm");
        System.out.println("7. Display Average");
        System.out.println(" ");
        System.out.print("Enter Menu Selection: ");
        opt = sc.nextInt();

        switch (opt){
            case 0:
                return;
            case 1:
                System.out.print("Enter first operand: "); // Ask for first operand
                firstOperand = sc.nextDouble(); // Gets first double input
                System.out.print("Enter second operand: "); // Ask for 2nd operand
                secondOperand = sc.nextDouble(); // gets 2nd operand
                result = firstOperand + secondOperand;
                ++counter;
                sumOfcalculations = sumOfcalculations + result;
                System.out.print("Result: " + result + "Counter: " + counter);
            case 2:
                System.out.print("Enter first operand: "); // Ask for first operand
                firstOperand = sc.nextDouble(); // Gets first double input
                System.out.print("Enter second operand: "); // Ask for 2nd operand
                secondOperand = sc.nextDouble(); // gets 2nd operand
                result = firstOperand - secondOperand;
                ++counter;
                sumOfcalculations = sumOfcalculations + result;
                System.out.print("Result: " + result + "Counter: " + counter);
            case 3:
                System.out.print("Enter first operand: "); // Ask for first operand
                firstOperand = sc.nextDouble(); // Gets first double input
                System.out.print("Enter second operand: "); // Ask for 2nd operand
                secondOperand = sc.nextDouble(); // gets 2nd operand
                result = firstOperand * secondOperand;
                ++counter;
                sumOfcalculations = sumOfcalculations + result;
                System.out.print("Result: " + result + "Counter: " + counter);
            case 4:
                System.out.print("Enter first operand: "); // Ask for first operand
                firstOperand = sc.nextDouble(); // Gets first double input
                System.out.print("Enter second operand: "); // Ask for 2nd operand
                secondOperand = sc.nextDouble(); // gets 2nd operand
                result = firstOperand / secondOperand;
                ++counter;
                sumOfcalculations = sumOfcalculations + result;
                System.out.print("Result: " + result + "Counter: " + counter);
            case 5:
                System.out.print("Enter first operand: "); // Ask for first operand
                firstOperand = sc.nextDouble(); // Gets first double input
                System.out.print("Enter second operand: "); // Ask for 2nd operand
                secondOperand = sc.nextDouble(); // gets 2nd operand
                result = Math.pow(firstOperand, secondOperand);
                ++counter;
                sumOfcalculations = sumOfcalculations + result;
                System.out.print("Result: " + result + "Counter: " + counter);
            case 6:
                System.out.print("Enter first operand: "); // Ask for first operand
                firstOperand = sc.nextDouble(); // Gets first double input
                System.out.print("Enter second operand: "); // Ask for 2nd operand
                secondOperand = sc.nextDouble(); // gets 2nd operand
                result = (log10(secondOperand)) / (log10(firstOperand));
                ++counter;
                sumOfcalculations = sumOfcalculations + result;
                System.out.print("Result: " + result + "Counter: " + counter);
            case 7:
                System.out.println("Sum of Calculations: " + sumOfcalculations);
                System.out.println("Number of Calculations: " + counter);
                System.out.println("Average of calculations: " + sumOfcalculations/counter);
            default:
                System.out.println("Error: Invalid selection!");
                break;
        }

    }
}

我知道我使switch语句有点过于复杂,但这是我使用它的唯一方法。

1 个答案:

答案 0 :(得分:2)

使用实际的循环机制

Scanner sc = new Scanner(System.in);
String input;
while (true) {
   input = sc.nextLine();
   if (input.equals("0")) break;

   menu(Integer.parseInt(input)); // Make 'static void menu(int op)' a separate method, not dump everything in the main method
}
System.out.println("Goodbye!");
return;

您还希望让案例中断

case 1:
   addition(); // TODO: define this
   break;
case 2:
   subtraction(); // TODO: define this
   break;
// ... etc
default: