Files
Calcultor_jsp/calculator.jsp

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>