首先把运算分为 两个数的运算(用运算符结束第一个数,开始第二个数);其次考虑小数点的处理(为小数点设置一个标志位,和小数点长度的存储位)
html 文件
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'test_0706.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style type="text/css">
</style>
<script language="javascript" type="text/jscript" src="myCalculator.js"></script>
</head>
<body>
<br />
<center>
<table>
<tr>
<td colspan="4"><input type = "text" id = "input" name = "input" size = "20" align="right" value="0" /></td>
</tr>
<tr>
<td><input type = "button" style="width:30px;" name = "button9" id = "button9" value = "9" onClick = "onclick9()" ></td>
<td><input type = "button" style="width:30px;" name = "button8" id = "button8" value = "8" onClick = "onclick8()" ></td>
<td><input type = "button" style="width:30px;" name = "button7" id = "button7" value = "7" onClick = "onclick7()" ></td>
<td><input type = "button" style="width:30px;" name = "buttonDept" id = "buttonDept" value = "/" onClick = "onclickDept()" ></td>
</tr>
<tr>
<td><input type = "button" style="width:30px;" name = "button6" id = "button6" value = "6" onClick = "onclick6()" ></td>
<td><input type = "button" style="width:30px;" name = "button5" id = "button5" value = "5" onClick = "onclick5()" ></td>
<td><input type = "button" style="width:30px;" name = "button4" id = "button4" value = "4" onClick = "onclick4()" ></td>
<td><input type = "button" style="width:30px;" name = "buttonPlus" id = "buttonPlus" value = "*" onClick = "onclickPlus()" ></td>
</tr>
<tr>
<td><input type = "button" style="width:30px;" name = "button3" id = "button3" value = "3" onClick = "onclick3()" ></td>
<td><input type = "button" style="width:30px;" name = "button2" id = "button2" value = "2" onClick = "onclick2()" ></td>
<td><input type = "button" style="width:30px;" name = "button1" id = "button1" value = "1" onClick = "onclick1()" ></td>
<td><input type = "button" style="width:30px;" name = "button0" id = "button0" value = "0" onClick = "onclick0()" ></td>
</tr>
<tr>
<td><input type = "button" style="width:30px;" name = "buttonDot" id = "buttonDot" value = "。" onClick = "onclickDot()" ></td>
<td><input type = "button" style="width:30px;" name = "buttonAdd" id = "buttonAdd" value = "+" onClick = "onclickAdd()"></td>
<td><input type = "button" style="width:30px;" name = "buttonSub" id = "buttonSub" value = "-" onClick = "onclickSub()" ></td>
<td><input type = "button" style="width:30px;" name = "buttonTemp" id = "buttonTemp" value = "=" onClick = "onclickTemp()" ></td>
</tr>
<tr>
<td colspan="4"><input type = "button" id = "clear" name = "clear" value = "清除" onClick="clearAll()" /></td>
</tr>
</table>
</center>
<br />
<p>温馨提示:<br/>
1、
<br/>
2、
<br/>
3、
</p>
</body>
</html>
js文件:
var current = null;//用来存储 符号 信息
var curNumber = 0; //存储 第二个参数
var befNumber = 0; //存储 第一个参数
var dotFlag = false; //标志第一个参数是否有 小数点
var dotLength = 0;// 小数点的长度
//乘号 键
function onclickPlus(){
current = "*";
befNumber = document.getElementById("input").value;
curNumber = 0;
dotFlag = false;
dotLength = 0;
}
//除号 键
function onclickDept(){
current = "/";
befNumber = document.getElementById("input").value;
curNumber = 0;
dotFlag = false;
dotLength = 0;
}
//加号 键
function onclickAdd(){
current = "+";
befNumber = document.getElementById("input").value;
curNumber = 0;
dotFlag = false;
dotLength = 0;
}
//减号 键
function onclickSub(){
current = "-";
befNumber = document.getElementById("input").value;
curNumber = 0;
dotFlag = false;
dotLength = 0;
}
//小数点 键
function onclickDot(){
//curNumber = document.getElementById("input").value;
//if(befNumber == 0){
//}
//是小数点显示出来 目前尚未成功
//document.getElementById("input").value = parseFloat(document.getElementById("input").value) + 0.0 ;
document.getElementById("input").value = document.getElementById("input").value + ".";
dotFlag = true;
dotLength ++;
}
//等号键
function onclickTemp(){
var result = 0;
if(current == "*"){
result = eval(" befNumber*curNumber ");
}else if(current == "/"){
result = eval(" befNumber/curNumber ");
}else if(current =="+"){
//做加法运算要特别注意,不要弄成字符串的链接,注意类型转换
result = eval(" parseFloat(befNumber)+parseFloat(curNumber) ");
}else if(current == "-"){
result = eval(" befNumber-curNumber ");
}else if(current == "null"){
result = befNumber;
}
document.getElementById("input").value = result;
result = 0;
curNumber = 0;
current = null;
dotFlag = false;
dotLength = 0;
}
//清除 键
function clearAll(){
document.getElementById("input").value = 0;
curNumber = 0;
current = null;
befNumber = 0;
dotFlag = false;
dotLength = 0;
}
//数字键
function onclick9(){
var temp = document.getElementById("input").value;
if( dotFlag == 1 ){
temp = parseFloat(temp) ;
document.getElementById("input").value = temp + 9/(Math.pow(10,dotLength));
dotLength = dotLength+1;
}else{
if( (current == null)){
document.getElementById("input").value = temp*10 + 9;
}else{
curNumber = curNumber *10 + 9;
document.getElementById("input").value = curNumber;
}
}
}
function onclick8(){
var temp = document.getElementById("input").value;
// 判断是否是第一个 数
if( (current == null)){
//判断是不是 有小数点
if(dotFlag==false){
//没有小数点的情况 正常处理
document.getElementById("input").value = parseInt(temp)*10 + 8;
}else{
//有小数点的情况 先转换 再相加
document.getElementById("input").value = parseFloat(temp) + 8/(Math.pow(10,dotLength));
dotLength ++;
}
}else{
curNumber = curNumber *10 + 8;
document.getElementById("input").value = curNumber;
}
}
function onclick7(){
var temp = document.getElementById("input").value;
// 判断是否是第一个 数
if( (current == null)){
//判断是不是 有小数点
if(dotFlag==false){
//没有小数点的情况 正常处理
document.getElementById("input").value = parseInt(temp)*10 + 7;
}else{
//有小数点的情况 先转换 再相加
document.getElementById("input").value = parseFloat(temp) + 7/(Math.pow(10,dotLength));
dotLength ++;
}
}else{
curNumber = curNumber *10 + 7;
document.getElementById("input").value = curNumber;
}
}
function onclick6(){
var temp = document.getElementById("input").value;
// 判断是否是第一个 数
if( (current == null)){
//判断是不是 有小数点
if(dotFlag==false){
//没有小数点的情况 正常处理
document.getElementById("input").value = parseInt(temp)*10 + 6;
}else{
//有小数点的情况 先转换 再相加
document.getElementById("input").value = parseFloat(temp) + 6/(Math.pow(10,dotLength));
dotLength ++;
}
}else{
curNumber = curNumber *10 + 6;
document.getElementById("input").value = curNumber;
}
}
function onclick5(){
var temp = document.getElementById("input").value;
// 判断是否是第一个 数
if( (current == null)){
//判断是不是 有小数点
if(dotFlag==false){
//没有小数点的情况 正常处理
document.getElementById("input").value = parseInt(temp)*10 + 5;
}else{
//有小数点的情况 先转换 再相加
document.getElementById("input").value = parseFloat(temp) + 5/(Math.pow(10,dotLength));
dotLength ++;
}
}else{
curNumber = curNumber *10 + 5;
document.getElementById("input").value = curNumber;
}
}
function onclick4(){
var temp = document.getElementById("input").value;
// 判断是否是第一个 数
if( (current == null)){
//判断是不是 有小数点
if(dotFlag==false){
//没有小数点的情况 正常处理
document.getElementById("input").value = parseInt(temp)*10 + 4;
}else{
//有小数点的情况 先转换 再相加
document.getElementById("input").value = parseFloat(temp) + 4/(Math.pow(10,dotLength));
dotLength ++;
}
}else{
curNumber = curNumber *10 + 4;
document.getElementById("input").value = curNumber;
}
}
function onclick3(){
var temp = document.getElementById("input").value;
// 判断是否是第一个 数
if( (current == null)){
//判断是不是 有小数点
if(dotFlag==false){
//没有小数点的情况 正常处理
document.getElementById("input").value = parseInt(temp)*10 + 3;
}else{
//有小数点的情况 先转换 再相加
document.getElementById("input").value = parseFloat(temp) + 3/(Math.pow(10,dotLength));
dotLength ++;
}
}else{
curNumber = curNumber *10 + 3;
document.getElementById("input").value = curNumber;
}
}
function onclick2(){
var temp = document.getElementById("input").value;
// 判断是否是第一个 数
if( (current == null)){
//判断是不是 有小数点
if(dotFlag==false){
//没有小数点的情况 正常处理
document.getElementById("input").value = parseInt(temp)*10 + 2;
}else{
//有小数点的情况 先转换 再相加
document.getElementById("input").value = parseFloat(temp) + 2/(Math.pow(10,dotLength));
dotLength ++;
}
}else{
curNumber = curNumber *10 + 2;
document.getElementById("input").value = curNumber;
}
}
function onclick1(){
var temp = document.getElementById("input").value;
// 判断是否是第一个 数
if( (current == null)){
//判断是不是 有小数点
if(dotFlag==false){
//没有小数点的情况 正常处理
document.getElementById("input").value = parseInt(temp)*10 + 8;
}else{
//有小数点的情况 先转换 再相加
document.getElementById("input").value = parseFloat(temp) + 8/(Math.pow(10,dotLength));
dotLength ++;
}
}else{
curNumber = curNumber *10 + 8;
document.getElementById("input").value = curNumber;
}
}
function onclick0(){
var temp = document.getElementById("input").value;
if( (current == null)){
document.getElementById("input").value = temp*10 + 0;
}else{
curNumber = curNumber *10 + 0;
document.getElementById("input").value = curNumber;
}
}