# Help with beginner's calculator

• October 13th, 2012, 11:26 PM
CrashOverride
Help with beginner's calculator
So I'm just starting out with JAVA at school and within the first week I'm way beyond what my book can do for me so I started writing a calculator that had four inputs, three for numbers and the fourth one for what I wanted to do to the numbers i.e. addition subtraction multiplication, and limited division(no decimals ).

Code :

public class Calculator
{

public int number1;
public int number2;
public int number3;
public int total;
public String function;

public void Number3(int number3)
{
number3 = number3;
}

public int Calculatorinput(int number1, int number2,String function)
{

if(number3 == null)
{number3 = 0;}
else{number3 = number3;}
if (function == "+")
{total = number1+number2+number3;}
else if (function == "-")
{total = number1-number2-number3;}
else if (function == "x")
{total = number1*number2*number3;}
else if (function =="/")
{total = number1/number2/number3;}
if (total == 0)
{System.out.println("something is wrong");}
else
{total = total;}
}

}

I know at this point it won't compile, the problem I'm having is making that third number an optional integer within the calculator, I know I'm either really close....or waaay off. :confused: :confused:
• October 14th, 2012, 12:48 AM
pbrockway2
Re: Help with beginner's calculator
Hi CrashOverride, welcome to the forums!

I've added "code" tags to your post. The idea is to put [code] at the start of a section of code and [/code] at the end. That way the code will be properly formatted and more readable.

In a similar vein it is a *very* good idea to format code according to Java coding standards - in particular one brace ({ and }) per line, and have the closing } brace line up with the start of the line containing the opening { brace. Also methods should start with a lowercase letter, and be descriptive of what the methods do. So, eg, setNumber3() would be a good name for the method that sets the value of number3.

Quote:

I know at this point it won't compile
So, what are the compiler messages?

---

Code :

public void Number3(int number3)
{
number3 = number3;
}

A small point, but assigning the value of number3 to itself does nothing at all. You probably mean

Code :

public void Number3(int number3)
{
this.number3 = number3;
}

Ask if you are unclear about the difference in meaning between these two.

---

Quote:

the problem I'm having is making that third number an optional integer
So-called "primitives" like int can't be null; they always have an actual integer value. So "if(number3==null)" makes no sense. (I'll come back to that.)

I'm not exactly sure what you mean by saying that number3. You set it to zero at one point. That's OK for addition and subtraction where it will basically have no effect. But for multiplication you'll get zero for number1*number2*number3. And for division you should think about what you expect number1/number2/number3 to evaluate to.

One way of implementing an optional value would be to have a boolean variable that represents whether a value has been assigned. (These are often called "flags"). Set the variable to true when a number gets assigned to number3 otherwise it will have its default value of false.

Code :

public class Calculator
{
private int number1;
//private int number2;
//private int number3;
private boolean number3set;
//private int total;
//private String function

private void setNumber3(int number3)
{
this.number3 = number3;
// added so that we can tell elsewhere whether or not
// number3 has been set with this method
number3set = true;
}

(always "private" unless you have an actual reason why not. I've commented out the unused variables: don't declare things unless and until you are going to use them for some purpose.)

With that set up you can split your other method up into two parts:

Code :

// renamed from Calculatorinput()
private int doCalculation(int number1, int number2,String function)
{
if(number3set)
{
// calculation with all three numbers here
}
else
{
// calculation that ignores number3 here
}
}

• October 14th, 2012, 03:59 PM
CrashOverride
Re: Help with beginner's calculator
Thanks a lot, after I read all your comments I felt a bit embarrassed that I overlooked all those minor things such as having zero within a multiplication equation would equal zero(I face palmed for a good minute just thinking stupid to myself), but I digress.

What I meant at the beginning by "I know that this won't compile" is that I know the code as it is won't pass so I didn't want anyone to look at it to spend time thinking about why it won't pass as is. When I put number3 equal to itself I wasn't trying to achieve anything at the moment so I should've just commented that out, same thing with "if(number3==null)" I was just trying to put something along the lines of what I was thinking so that when I came back to it I wouldn't forget what I wanted to do.

And again I apologize for having no comments...it completely escaped me to put them in for someone reason explaining what I wanted it to do and what I was thinking. Next program I'll make sure to pay extra attention to those things.
• October 14th, 2012, 06:16 PM
pbrockway2
Re: Help with beginner's calculator
Quote:

same thing with "if(number3==null)" I was just trying to put something along the lines of what I was thinking
Yes, and it had (I hope) exactly that effect. Post back if what I suggested with a boolean flag doesn't work out for any reason.