[英]How can I loop this switch statement?
我正在用Java开发一个科学的计算器程序,并获得了使用switch语句获得所需答案的程序。
但是我还需要循环使用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语句有点太复杂了,但这是我根据需要进行工作的唯一方法。
使用实际的循环机制
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:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.