[英]How to get calculator program to add, subtract, multiply, divide more than two numbers
我制作了一個基本的計算器應用程序,它可以加、減乘或除兩個數字。 我正在嘗試改進程序,使其能夠'+' '-' '*' 或 '/' 不僅僅是兩個數字。 這是到目前為止我已經完成的基本 java 計算器程序:
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("\nEnter first number: \n");
double fnum = input.nextDouble();
System.out.println("\nEnter an operation sign such as, '+', '-', '*', or '/', '=': \n");
char operator = input.next().charAt(0);
System.out.println("\nEnter second number: \n");
double snum = input.nextDouble();
input.close();
switch(operator) {
case '+':
double answer = fnum + snum;
System.out.println("\n" + fnum + " " + operator + " " + snum + " = " + answer);
break;
case '-':
double answer1 = fnum - snum;
System.out.println("\n" + fnum + " " + operator + " " + snum + " = " + answer1);
break;
case '*':
double answer2 = fnum * snum;
System.out.println("\n" + fnum + " " + operator + " " + snum + " = " + answer2);
break;
case '/':
double answer3 = fnum / snum;
System.out.println("\n" + fnum + " " + operator + " " + snum + " = " + answer3);
break;
default:
System.out.println("Wrong choice for operator. ");
break;
}
}
}
為了實現這一點,我認為可能在 sysout“Enter operator”行之前必須有一個循環,我試圖將一個 do while 循環與 while 部分合並為 (operator.= '=') 並且沒有成功. 哦,是的,我需要改寫“輸入第二個數字”系統輸出。 提前感謝您的任何建議!
**這是我當前計算器程序的示例 output,然后是我想要的計算器程序的 I output 示例。
電流計算器 output:
8.0 + 2.0 = 10.0
我正在尋找計算器程序來做什么:
8.0 - 4.0 * 10.0 = 40.0
注意:當我有時間時,我自己正在積極尋求解決方案。 如果你不想幫助我,那很好。 我認為我的問題是明確的、有效的,沒有必要根據社區准則刪除。 謝謝
下面的代碼沒有實現任何錯誤檢查,更重要的是,它沒有考慮運算符的優先級——這就是為什么最好有一個解析器——但可以給你一個想法。
值和運算符是在循環中獲得的,該循環在用戶輸入=
符號之前有效
輸入的值和運算符存儲在列表numbers
和operators
中
退出循環后,對存儲的值執行操作
public class Calculator {
public static void main(String[] args) {
ArrayList<Double> numbers = new ArrayList<Double>();
ArrayList<Character> operators = new ArrayList<Character>();
Scanner scanner = new Scanner(System.in);
try {
do {
System.out.println("\nEnter a number: \n");
numbers.add(scanner.nextDouble());
System.out.println("\nEnter an operation sign such as, '+', '-', '*', or '/', '=': \n");
char operator = scanner.next().charAt(0);
if (operator == '=')
break;
operators.add(operator);
} while (true);
} finally {
scanner.close();
}
Double answer = numbers.remove(0);
String resultText = "" + answer;
for (int i=0; i<operators.size(); ++i) {
char operator = operators.get(i);
Double number = numbers.get(i);
switch(operator) {
case '+':
answer += number;
break;
case '-':
answer -= number;
break;
case '*':
answer *= number;
break;
case '/':
answer /= number;
break;
default:
System.out.println("Wrong choice for operator. ");
break;
}
resultText += " " + operator + " " + number;
}
System.out.println("\n" + resultText + " = " + answer);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.