我这里有flex做的计算机代码,思想都一样,自己看看吧 private var operator:String=""; private var num1:String=""; private var num2:String=""; private var point:Boolean=false;
private function calculateResult():Number{ var result:Number=0; switch(operator) { case "/": result=Number(num1)/Number(num2); break; case "*": result=Number(num1)*Number(num2); break; case "+": result=Number(num1)+Number(num2); break; case "—": result=Number(num1)-Number(num2); break; default: break; } return result; }
private function numClickHandle(event:MouseEvent):void{ var showNum:String;
if(point) { showNum="."+String(Number(event.target.label)); point=false; } else { showNum=String(Number(event.target.label)); } if(operator=="") { num1+=showNum; txtResult.text=num1; } else { num2+=showNum; txtResult.text=num2; } } private function opeartorClickHandler(event:MouseEvent):void{ operator=event.target.label; if(num1!=""&&num2!="") { var result:Number=calculateResult(); txtResult.text=result.toString(); num1=result.toString(); num2=""; point=false; } } private function resultClickHandle(event:MouseEvent):void{ if(num1!=""&&num2!=""&&operator!="") { var result:Number=calculateResult(); txtResult.text=result.toString(); num1=result.toString(); num2=""; operator=""; point=false; } } private function radixClickHandle(event:MouseEvent):void { point = true; } private function btnResetClickHandle(event:MouseEvent):void { num1=""; num2=""; operator=""; point=false; txtResult.text="0"; }
if(你用来显示的控件.Text=="")
{
你用来显示的控件.Text=="0.";
}else{
你用来显示的控件.Text==".";
}这就完了,如果不明白可以加我QQ:271341573
else里面的应该是
else{
你用来显示的控件.Text=你用来显示的控件.Text+".";
}
http://topic.csdn.net/u/20091105/19/3a919720-b121-4011-90d8-b22f4e694495.html
2.当textbox的值改变时判断textbox.value是不是"0"或"0.*";是"0"到A,是"0.*"到B.
A:如果输入的全是0,就textbox.value=0;如果不是就不管
B:除了输入了"."或是输入的字串长度>textbox.maxlength否则不管。
i_1=int.parse(i_input.split('.')[0])
和小数点后半部分,
i_2=int.parse(i_input.split('.')[2])然后想怎么处理都行
private var operator:String="";
private var num1:String="";
private var num2:String="";
private var point:Boolean=false;
private function calculateResult():Number{
var result:Number=0;
switch(operator)
{
case "/":
result=Number(num1)/Number(num2);
break;
case "*":
result=Number(num1)*Number(num2);
break;
case "+":
result=Number(num1)+Number(num2);
break;
case "—":
result=Number(num1)-Number(num2);
break;
default:
break;
}
return result;
}
private function numClickHandle(event:MouseEvent):void{
var showNum:String;
if(point)
{
showNum="."+String(Number(event.target.label));
point=false;
}
else
{
showNum=String(Number(event.target.label));
}
if(operator=="")
{
num1+=showNum;
txtResult.text=num1;
}
else
{
num2+=showNum;
txtResult.text=num2;
}
}
private function opeartorClickHandler(event:MouseEvent):void{
operator=event.target.label;
if(num1!=""&&num2!="")
{
var result:Number=calculateResult();
txtResult.text=result.toString();
num1=result.toString();
num2="";
point=false;
}
}
private function resultClickHandle(event:MouseEvent):void{
if(num1!=""&&num2!=""&&operator!="")
{
var result:Number=calculateResult();
txtResult.text=result.toString();
num1=result.toString();
num2="";
operator="";
point=false;
}
}
private function radixClickHandle(event:MouseEvent):void
{
point = true;
}
private function btnResetClickHandle(event:MouseEvent):void
{
num1="";
num2="";
operator="";
point=false;
txtResult.text="0";
}
lblResult.Text += "0.";
主要是这里~
1 做一个List<char>, 或者stack也可以。
2 每次输入的时候, 在list里面添加东西。当然删除的时候就减东西就行了。
3 界面要显示的时候, 把list转成string, Convert过去, 然后再ToString回来。显示就行了。 什么都不用自己操心。 连3e5这类奇怪的输入都可以接受的。