Java method returns double | int -
i need method accept string number parameter , return double if has remainder, or int if decimal.
i wrote such code:
private double converttonumber(string number) { double d = double.parsedouble(number); if (d % 1.0 == 0) { return integer.parseint(number); } else { return d; } } but signature of method double returns double in case.
please give me hint.
i'm not quire sure understand intention of returning double or , int knowing that's not possible single function return different data types.
what think understand sample code, if string (for example, "123.0" doesn't matter how many trailing zeros) passed calculatorengine, link provided, want treated int , math operator perform calculations int , double (since currenttotal double).
now after calculations done, if currenttotal ends .0 want treated int , drop point, otherwise keep point.
if i'm understanding correctly, here's think calculatorengine might like:
public static void main(string[] args) { calculatorengine ce = new calculatorengine(); ce.equal("1.01"); ce.add("12"); system.out.println(ce.gettotalstring()); ce.subtract("0.01"); system.out.println(ce.gettotalstring()); ce.multiply("100.00000"); system.out.println(ce.gettotalstring()); ce.divide("123"); system.out.println(ce.gettotalstring()); } public static class calculatorengine { private enum operator { add, subtract, multiply, divide } private double currenttotal; public calculatorengine() { currenttotal = 0; } public string gettotalstring() { return currenttotal % 1.0 == 0 ? integer.tostring((int)currenttotal) : string.valueof(currenttotal); } public void equal(string number) { currenttotal = double.parsedouble(number); } public void add(string number) { converttodouble(number, operator.add); } public void subtract(string number) { converttodouble(number, operator.subtract); } public void multiply(string number) { converttodouble(number, operator.multiply); } public void divide(string number) { converttodouble(number, operator.divide); } public void changesign(string number) { double d = double.parsedouble(number); currenttotal = d * (-1); } public void dot(string number) { // todo } private boolean isdouble(string number) { double d = double.parsedouble(number); return d % 1.0 != 0; } private void converttodouble(string number, operator operator) { double dblnumber = double.parsedouble(number); switch (operator) { case add: add(dblnumber); break; case subtract: subtract(dblnumber); break; case multiply: multiply(dblnumber); break; case divide: divide(dblnumber); break; default: throw new assertionerror(operator.name()); } } private void add(double number) { currenttotal += number % 1.0 == 0 ? (int)number : number; } private void subtract(double number) { currenttotal -= number % 1.0 == 0 ? (int)number : number; } private void multiply(double number) { currenttotal *= number % 1.0 == 0 ? (int)number : number; } private void divide(double number) { currenttotal /= number % 1.0 == 0 ? (int)number : number; } } results:
13.01 13 1300 10.56910569105691
Comments
Post a Comment