【发布时间】:2015-03-25 03:25:08
【问题描述】:
需要一种方法来完成我的“高级”计算器。我一直在用循环进行头脑风暴,但我让自己感到困惑。关于如何实现数字操作数的任何想法,而不仅仅是嵌套一堆 if 语句并通过所有这些进行硬编码。
import java.util.*;
公开课计算器{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("welcome to your personal calculator. is your problem simple or advanced(multiple calculations)\n"
+ "Type 1 for simple or 2 for advanced");
int choice = scan.nextInt();
if(choice == 1){
System.out.println("Simple equation");
System.out.println("Enter the first number");
int firstnum = scan.nextInt();
System.out.println("Enter the second number");
int secondnum = scan.nextInt();
System.out.println("are you adding, subtracting multiplying or dividing? ENTER +,*,-, or /");
String operand = scan.next();
if(operand.equals("+")){
int solution = firstnum + secondnum;
System.out.println(firstnum + operand + secondnum + "=" + solution);
}
else if (operand.equals("*")){
int solution = firstnum * secondnum;
System.out.println(firstnum + operand + secondnum + "=" + solution);
}
else if(operand.equals("-")){
int solution = firstnum - secondnum;
System.out.println(firstnum + operand + secondnum + "=" + solution);
}
else if(operand.equals("/")){
int solution = firstnum / secondnum;
System.out.println(firstnum + operand + secondnum + "=" + solution);
}
else{
System.out.println("Did not recognize operation type please restart program.");
return;
}
}
else if(choice == 2){
System.out.println("Advanced equation");
System.out.println("How many numbers are in your equation? max of 7\n"
+ "operands are chosen by typing +,-,*,or /");
int numofnumbers = scan.nextInt();
if(numofnumbers == 2){
System.out.println("enter first num");
int firstnum = scan.nextInt();
System.out.println("enter second num");
int secondnum = scan.nextInt();
System.out.println("enter operand");
String operand = scan.next();
if(operand.equals("+")){
int solution = firstnum + secondnum;
System.out.println(firstnum + operand + secondnum + "=" + solution);
}
else if (operand.equals("*")){
int solution = firstnum * secondnum;
System.out.println(firstnum + operand + secondnum + "=" + solution);
}
else if(operand.equals("-")){
int solution = firstnum - secondnum;
System.out.println(firstnum + operand + secondnum + "=" + solution);
}
else if(operand.equals("/")){
int solution = firstnum / secondnum;
System.out.println(firstnum + operand + secondnum + "=" + solution);
}
else{
System.out.println("Did not recognize operation type please restart program.");
return;
}
}
else if(numofnumbers == 3){
System.out.println("enter first num");
int firstnum = scan.nextInt();
System.out.println("enter second num");
int secondnum = scan.nextInt();
System.out.println("enter thir num");
int thirdnum = scan.nextInt();
}
else if(numofnumbers == 4){
System.out.println("enter first num");
int firstnum = scan.nextInt();
System.out.println("enter second num");
int secondnum = scan.nextInt();
System.out.println("enter third num");
int thirdnum = scan.nextInt();
System.out.println("enter fourth num");
int fourthnum = scan.nextInt();
}
else if(numofnumbers == 5){
System.out.println("enter first num");
int firstnum = scan.nextInt();
System.out.println("enter second num");
int secondnum = scan.nextInt();
System.out.println("enter third num");
int thirdnum = scan.nextInt();
System.out.println("enter fourth num");
int fourthnum = scan.nextInt();
System.out.println("enter fifth num");
int fifthnum = scan.nextInt();
}
else if(numofnumbers == 6){
System.out.println("enter first num");
int firstnum = scan.nextInt();
System.out.println("enter second num");
int secondnum = scan.nextInt();
System.out.println("enter third num");
int thirdnum = scan.nextInt();
System.out.println("enter fourth num");
int fourthnum = scan.nextInt();
System.out.println("enter fifth num");
int fifthnum = scan.nextInt();
System.out.println("enter sixth num");
int sixthnum = scan.nextInt();
}
else if(numofnumbers == 7){
System.out.println("enter first num");
int firstnum = scan.nextInt();
System.out.println("enter second num");
int secondnum = scan.nextInt();
System.out.println("enter third num");
int thirdnum = scan.nextInt();
System.out.println("enter fourth num");
int fourthnum = scan.nextInt();
System.out.println("enter fifth num");
int fifthnum = scan.nextInt();
System.out.println("enter sixth num");
int sixthnum = scan.nextInt();
System.out.println("enter seventh num");
int seventhnum = scan.nextInt();
}
}
else{
System.out.println("you did not type one or two. please restart program.");
return;
}
} }
【问题讨论】:
-
stackoverflow.com/questions/29224513/… 我的这个问题也需要另一个答案。我得到了一个答案,但它仍然不能正常工作,所以如果我也能得到一些关于这个问题的建议,那就太好了
-
与其将程序限制为非常具体的输入,不如考虑如何将典型的数学表达式作为字符串并对其进行解析/评估。看看这里stackoverflow.com/questions/13662001/…
标签: java