So i think i have fully coded my calculator but it still doesn’t seem to be performing the calculations correctly. I can’t see where i am going wrong. If i perform a calculation let’s say 6*2 it outputs NaN then i straight away + by let’s say 5 it outputs NaN again. And it doesn’t make the operators display only once, so if i click on ‘+’ twice it will display twice in the display when it is meant to only display once and in one of my functions i cleared the display field so that it would replace the number’s when the next operation is performed but it doesn’t seem to be doing that. I have been going over the code several times but i can’t seem to identify where the problem is coming from.
import flash.events.MouseEvent;
var btn:Array = new Array();
for(var i = 0; i < 10; i++) {
var myBtn:Btn = new Btn();
myBtn.buttonMode = true;
myBtn.mouseChildren = false;
myBtn.num = Number(i);
myBtn.caption.text = String (i);
addChild(myBtn);
btn.push(myBtn);
btn*.addEventListener(MouseEvent.CLICK,pressNumber);//EVENT TO ADD NUMBERS TO DISPLAY
}
//OPERATORS//
var operate:Array=new Array("÷","x","-","+");
var operators:Array = new Array();
for(var io:int = 0; io < 4; io++) {
var opBtn:Btn_operator = new Btn_operator();
opBtn.buttonMode = true;
opBtn.mouseChildren = false;
opBtn.op = Number(operators);
addChild(opBtn);
operators.push(opBtn);
opBtn.addEventListener(MouseEvent.CLICK, pressOperator);//EVENT TO ADD OPERATORS TO DISPLAY
}
//EQUALS
var equals:Btn_equals = new Btn_equals();
equals.buttonMode = true;
equals.mouseChildren = false;
equals.caption_op.text = String ("=");
addChild(equals);
equals.addEventListener(MouseEvent.CLICK, performEquals);//EVENT TO CALCULATE
//VARIABLE HANDLE OPERATION NOT BUTTON
var operates:String;
//HANDLE FIRST AND SECOND VALUE
var num1:Number;
var num2:Number;
var currentNumber:String ="";
function pressNumber(e:MouseEvent):void{
display_txt.appendText(e.target.num);
currentNumber+=(e.target.num);
trace(e.target.num);
}
function setNumber():void{
if (isNaN(num1)){
num1 = Number(currentNumber);
}
else
{
num2 = Number(currentNumber);
}
currentNumber = "";
}
//DISPLAY OPERATORS
function pressOperator(event:MouseEvent):void{
operates = operate[operators.indexOf(event.target)];
display_txt.appendText(operate[operators.indexOf(event.target)]);
trace(operate[operators.indexOf(event.target)]);
setNumber();
//trace(operates);
//CHECKING FOR VALUES AND STORING NUMBERS
if(!(isNaN(num1)) || (isNaN(num2))){
performCalculation();
}
}
function performCalculation():void{
switch (operate){
case "/":
num1/=num2;
break;
case "x":
num1*=num2;
break;
case "-":
num1-=num2;
break;
case "+":
num1+=num2;
break;
default:
break;
}
}
function performEquals(e:MouseEvent):void{
//display_txt.text=String(num1);
num2=NaN;
performCalculation();
answer_txt.text=String(num2);
trace(num2);
}
I have not added the full code as it is too long, i have just added the parts which relate to each other. Help would be greatly appreciatted, thank you. I have seen NaN so many times it is becoming my enemy.