# Calculator plus sign will not show on the display screen, Any ideas?

Hello, I am trying to make a simple calculator in processing, but when I click the plus sign, it does not display, instead, a little box displays. Any ideas?

Calculator tab

``````Keypad keyPad;

color backgroundC = color(200);
String entery_text="Calculator";
float firstNumber;
char operation;
float secondNumber;

void setup(){
size(400, 500);
background(backgroundC);
noStroke();
textSize(60);

}

void draw(){

text(firstNumber,10,70);
text(operation,10,70);

}
void mousePressed(){
if( mouseX > 10 && mouseX < 80){
if(mouseY > 80 && mouseX < 300){

firstNumber=1;
firstNumber=1;
}else{
secondNumber= 1;

if( mouseY > 80  && mouseY < 400){
if(mouseX > 80 && mouseX < 310){
operation = '+';

}
}
}
}
}
}
``````

``````class Keypad {
color backgroundC = color(200);
color entryC = color(242,244,255);
color entryTC = color(0);
color buttonC = color(255);
color buttonTC = color(93, 67, 247);
float firstNumber;

}
void Display(){

//making the background behind the keys gray
background(backgroundC);

//making the screen display background slightly purple
fill(entryC);
rect(10, 10, 380, 70);

fill(entryTC);

//making the background of the button's white
fill(buttonC);

//The square for 7
rect(10, 100, 80, 80, 20);

//the square for 8
rect(110, 100, 80, 80, 20);

//the square for 9
rect(210, 100, 80, 80, 20);

//the square for /
rect(310, 100, 80, 80, 20);

//the square for 4
rect(10, 200, 80, 80, 20);

//the square for 5
rect(110, 200, 80, 80, 20);

//the square for 6
rect(210, 200, 80, 80, 20);

//the square for x
rect(310, 200, 80, 80, 20);

//the square for 1
rect(10, 300, 80, 80, 20);

//the square for 2
rect(110, 300, 80, 80, 20);

//the square for 3
rect(210, 300, 80, 80, 20);

//the square for -
rect(310, 300, 80, 80, 20);

//the square for C
rect(10, 400, 80, 80, 20);

//the square for 0
rect(110, 400, 80, 80, 20);

//the square for =
rect(210, 400, 80, 80, 20);

//the square for +
rect(310, 400, 80, 80, 20);

fill(buttonTC);

text("7", 27, 162);
text("8", 127, 162);
text("9", 227, 162);
text("/", 333, 155);

text("4", 27, 262);
text("5", 127, 262);
text("6", 227, 262);
text("x", 327, 262);

text("1", 27, 362);
text("2", 127, 362);
text("3", 227, 362);
text("-", 327, 362);

text("C", 27, 462);
text("0", 127, 462);
text("=", 227, 462);
text("+", 327, 462);

}

void mousePressed(){
if( mouseX > 10 && mouseX < 80){
if(mouseY > 300 && mouseX < 30){

firstNumber=1;

}

}
}
}
``````

Hello,

This displayed correctly (no box):

``````char operation = ' ';  // Was not initialized to a chat that can be displayed and defaulted to 0
``````

I did not explore further than that.

`:)`

I did that, but it gave me a null pointer exception when I put this code in draw: text(operation,200,70);

Hello,

I can only get a 1 displayed.
With the character initialized I do not gt a “box”.

That is all I got.

`:)`

Gotcha! thanks for letting me know!

And this:

``````char operation;       //displays box
//char operation = ' '; // displays "blank"
//char operation = '+'; // displays +
void setup()
{
textSize(48);
textAlign(CENTER, CENTER);
text(operation, width/2, height/2-10);
}
``````

Ok that is it for now.

`:)`

Hello,

there are other difficulties in your code

(Again, mousePressed() could be simplified when you had a list of buttons (objects, see other thread). You could just for-loop over the list of buttons. Depending on its type you would then treat them differently:

• type number: just add the number of the button to the current number (at its end) - for ALL number buttons the same
• type operator: fill the text of the button in the operator variable. For ±*/
• type equal : calc the result based on two numbers and operator and display it
• type Clear: clear everything
)

The mousePressed() function in the class is not called automatically by processing.

You would have to call it from mousePressed() outside the class.

When you hit ctrl-t in processing you get auto-format: better indents. See below: Your code after ctrl-t.

Here you see that the closing brackets } are often wrong.

E.g. this

``````      if (isReadingFirstNumber) {
firstNumber=1;
} else {
secondNumber= 1;
``````

should close directly.

Also this

``````  if ( mouseX > 10 && mouseX < 80) {
if (mouseY > 80 && mouseX < 300) {
``````

should close prior to this

``````        if ( mouseY > 80  && mouseY < 400) {
if (mouseX > 80 && mouseX < 310) {
``````
``````  firstNumber=1;
``````

You should not set firstNumber outside the if. It would get overwritten by 1 when the second number comes in! Bad.

``````  if ( mouseX > 10 && mouseX < 80) {
if (mouseY > 80 && mouseX < 300) {
``````

you check mouseX, mouseX and then mouseY but then again mouseX! That’s wrong. Also the numbers are wrong:

``````  if ( mouseX > 10 && mouseX < 10+80) {
if (mouseY > 300 && mouseY < 300+80) {
``````

and you don’t need a double if, you can work with && :

``````  if (mouseX > 10 && mouseX < 10+80 &&
mouseY > 300 && mouseY < 300+80) {
``````

before setup you had `boolean isReadingFirstNumber = false;`

must be

``````
``````

You are reading the first number at startup.

Also, in draw() you display firstNumber. You should have a variable textToDisplay there and fill it, because you also need to display secondNumber later.

``````void mousePressed() {

if ( mouseX > 10 && mouseX < 80) {
if (mouseY > 80 && mouseX < 300) {

firstNumber=1;
firstNumber=1;
} else {
secondNumber= 1;

if ( mouseY > 80  && mouseY < 400) {
if (mouseX > 80 && mouseX < 310) {
operation = '+';
}
}
}
}
}
}
``````

My code of the function mousePressed()

``````
void mousePressed() {
if ( mouseX > 10 && mouseX < 10+80 &&
mouseY > 300 && mouseY < 300+80) {
println("1");
firstNumber=1;
} else {
secondNumber= 1;
}
}

if (mouseX > 310 && mouseX < 310+80 &&
mouseY > 400  && mouseY < 400+80) {
println("+");
operation = '+';
}
//
}
``````

Warm regards,

Chrisir

Full entire Sketch

``````

color backgroundC = color(200);

String entery_text="Calculator";

float firstNumber = 0;
float secondNumber = 0;
boolean isReadingFirstNumber = true;  // !!!!!!!!!!!!!!!!!!!
char operation='?';                                  // !!!!!!!!!!!!!!!!!!!
float textToDisplay = firstNumber;           // !!!!!!!!!!!!!!!!!!!

void setup() {
size(1400, 500);
background(backgroundC);
noStroke();
textSize(60);
}

void draw() {
text(textToDisplay, 40, 70);
text(operation, 10, 70);
text(firstNumber+"   "+ operation+"  " + secondNumber, 440, 70); // !!!!!!!!!!!!!!!!!!!
}

// --------------------------------------------------------------

void mousePressed() {
//
if ( mouseX > 10 && mouseX < 10+80 &&
mouseY > 300 && mouseY < 300+80) {
println("1");
firstNumber=1;
textToDisplay = firstNumber; // !!!!!!!!!!!!!!!!!!!
} else {
secondNumber= 1;
textToDisplay = secondNumber; // !!!!!!!!!!!!!!!!!!!
}
}

if (mouseX > 310 && mouseX < 310+80 &&
mouseY > 400  && mouseY < 400+80) {
println("+");
operation = '+';
textToDisplay = secondNumber; // !!!!!!!!!!!!!!!!!!!
}
//
}

// ===============================================================

color backgroundC = color(200);
color entryC = color(242, 244, 255);
color entryTC = color(0);
color buttonC = color(255);
color buttonTC = color(93, 67, 247);
float firstNumber;

// empty constructor
}

void Display() {

//making the background behind the keys gray
background(backgroundC);

//making the screen display background slightly purple
fill(entryC);
rect(10, 10, 380, 70);

fill(entryTC);

//making the background of the button's white
fill(buttonC);

//The square for 7
rect(10, 100, 80, 80, 20);

//the square for 8
rect(110, 100, 80, 80, 20);

//the square for 9
rect(210, 100, 80, 80, 20);

//the square for /
rect(310, 100, 80, 80, 20);

//the square for 4
rect(10, 200, 80, 80, 20);

//the square for 5
rect(110, 200, 80, 80, 20);

//the square for 6
rect(210, 200, 80, 80, 20);

//the square for x
rect(310, 200, 80, 80, 20);

//the square for 1
rect(10, 300, 80, 80, 20);

//the square for 2
rect(110, 300, 80, 80, 20);

//the square for 3
rect(210, 300, 80, 80, 20);

//the square for -
rect(310, 300, 80, 80, 20);

//the square for C
rect(10, 400, 80, 80, 20);

//the square for 0
rect(110, 400, 80, 80, 20);

//the square for =
rect(210, 400, 80, 80, 20);

//the square for +
rect(310, 400, 80, 80, 20);

fill(buttonTC);

text("7", 27, 162);
text("8", 127, 162);
text("9", 227, 162);
text("/", 333, 155);

text("4", 27, 262);
text("5", 127, 262);
text("6", 227, 262);
text("x", 327, 262);

text("1", 27, 362);
text("2", 127, 362);
text("3", 227, 362);
text("-", 327, 362);

text("C", 27, 462);
text("0", 127, 462);
text("=", 227, 462);
text("+", 327, 462);
}
//
}//class
``````