166 lines
5.9 KiB
Plaintext
166 lines
5.9 KiB
Plaintext
<%@ page contentType="text/html; charset=utf-8" %>
|
|
<html>
|
|
<head>
|
|
<title> Calculator </title>
|
|
</head>
|
|
|
|
<body>
|
|
<p>Calculator</p>
|
|
<%!
|
|
// 存運算元的值
|
|
float[] number = {0, 0};
|
|
// 在第幾個運算元
|
|
int i = 0;
|
|
// 使用中的運算子
|
|
int oprator = 0;
|
|
// 加法
|
|
void add() {
|
|
number[0] += number[1];
|
|
}
|
|
// 減法
|
|
void subtract() {
|
|
number[0] -= number[1];
|
|
}
|
|
// 乘法
|
|
void multiply() {
|
|
number[0] *= number[1];
|
|
}
|
|
// 除法
|
|
void divide() {
|
|
number[0] /= number[1];
|
|
}
|
|
// 取餘
|
|
void remainder() {
|
|
number[0] %= number[1];
|
|
}
|
|
//清除
|
|
void clear() {
|
|
number[0] = 0;
|
|
number[1] = 0;
|
|
}
|
|
%>
|
|
|
|
<form action="calculator.jsp" method=post>
|
|
<p>
|
|
<input name="symbol" type="submit" value="%">
|
|
<input name="symbol" type="submit" value="root">
|
|
<input name="symbol" type="submit" value="square">
|
|
<input name="symbol" type="submit" value="reciprocal">
|
|
<br>
|
|
<input name="symbol" type="submit" value="CE">
|
|
<input name="symbol" type="submit" value="C">
|
|
<input name="symbol" type="submit" value="X">
|
|
<input name="symbol" type="submit" value="/">
|
|
<br>
|
|
<input name="symbol" type="submit" value="7">
|
|
<input name="symbol" type="submit" value="8">
|
|
<input name="symbol" type="submit" value="9">
|
|
<input name="symbol" type="submit" value="*">
|
|
<br>
|
|
<input name="symbol" type="submit" value="4">
|
|
<input name="symbol" type="submit" value="5">
|
|
<input name="symbol" type="submit" value="6">
|
|
<input name="symbol" type="submit" value="-">
|
|
<br>
|
|
<input name="symbol" type="submit" value="1">
|
|
<input name="symbol" type="submit" value="2">
|
|
<input name="symbol" type="submit" value="3">
|
|
<input name="symbol" type="submit" value="+">
|
|
<br>
|
|
<input name="symbol" type="submit" value="+-">
|
|
<input name="symbol" type="submit" value="0">
|
|
<input name="symbol" type="submit" value=".">
|
|
<input name="symbol" type="submit" value="=">
|
|
</p>
|
|
</form>
|
|
|
|
<%
|
|
// 輸入的字元
|
|
|
|
try {
|
|
String inputdata = request.getParameter("symbol");
|
|
if(inputdata == null) {
|
|
inputdata = "0";
|
|
}
|
|
|
|
if (inputdata.equals("CE")) {
|
|
clear();
|
|
}
|
|
// 如果是數字就累積輸入
|
|
else if (inputdata.equals("0") ||
|
|
inputdata.equals("1") ||
|
|
inputdata.equals("2") ||
|
|
inputdata.equals("3") ||
|
|
inputdata.equals("4") ||
|
|
inputdata.equals("5") ||
|
|
inputdata.equals("6") ||
|
|
inputdata.equals("7") ||
|
|
inputdata.equals("8") ||
|
|
inputdata.equals("9")) {
|
|
// 輸入多位數字
|
|
number[i] *= 10;
|
|
number[i] += Float.parseFloat(inputdata);
|
|
}
|
|
else {
|
|
// 如果有選擇的運算子
|
|
if (oprator != 0) {
|
|
switch (oprator) {
|
|
case 1:
|
|
add();
|
|
break;
|
|
case 2:
|
|
subtract();
|
|
break;
|
|
case 3:
|
|
multiply();
|
|
break;
|
|
case 4:
|
|
divide();
|
|
break;
|
|
case 5:
|
|
remainder();
|
|
break;
|
|
}
|
|
}
|
|
if (inputdata.equals("=")) {
|
|
// 清除運算子
|
|
oprator = 0;
|
|
// 回到第一個運算元
|
|
i = 0;
|
|
number[1] = 0;
|
|
}
|
|
else {
|
|
// 回到第二個運算元
|
|
i = 1;
|
|
number[1] = 0;
|
|
// 把運算
|
|
if (inputdata.equals("+")) {
|
|
oprator = 1;
|
|
}
|
|
else if (inputdata.equals("-")) {
|
|
oprator = 2;
|
|
}
|
|
else if (inputdata.equals("*")) {
|
|
oprator = 3;
|
|
}
|
|
else if (inputdata.equals("/")) {
|
|
oprator = 4;
|
|
}
|
|
else if (inputdata.equals("%")) {
|
|
oprator = 5;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
// 印出現在的數字
|
|
out.println(number[i]);
|
|
}
|
|
catch (NumberFormatException e) {
|
|
// 錯誤訊息
|
|
throw new NumberFormatException("您輸入的不是整數");
|
|
}
|
|
%>
|
|
</body>
|
|
</html> |