java.util.scanner - String sentinel on integer input Java -
i posted question example, different problem. came problem. when choose option 3(multiply) result zero. , if choose option 4, cannot divide zero(zero sentinel). how can make sentinel string or char when use int input numbers calculated? here code.
import java.util.scanner; public class switchloopnumbers { public static void main(string[] args) { scanner scan = new scanner(system.in); int numbers = 0; int result = 0; int option; boolean quit = true; string done = ""; { system.out.println("calculator menu"); system.out.println("********** ****"); system.out.println("\n1. add"); system.out.println("2. substract"); system.out.println("3. multiply"); system.out.println("4. divide"); system.out.println(); system.out.print("enter option >> "); option = scan.nextint(); while (quit) { switch (option) { case 1: system.out.print("enter number, type 0 when done >> "); numbers = scan.nextint(); if (numbers == 0) { quit = false; } result += numbers; break; case 2: system.out.print("enter number, type 0 when done >> "); numbers = scan.nextint(); if (numbers == 0) { quit = false; } result = numbers - result; break; case 3: system.out.print("enter number, type 0 when done >> "); numbers = scan.nextint(); if (numbers == 0) { quit = false; } result *= numbers; break; case 4: system.out.print("enter number, type 0 when done >> "); numbers = scan.nextint(); if (numbers == 0) { quit = false; } result = result / numbers; break; } } system.out.println("the total is: " + result); system.out.println("back main menu ? y/n "); scan.nextline(); done = scan.nextline(); numbers = 0; result = 0; quit = true; } while ("y".equalsignorecase(done)); system.out.println("thank using calculator"); } }
your main problem have initialized result
zero, , it's approach addition , subtraction, when comes multiplication not going work. so, solution problem have set variable integer
, can change want inside loop depending on operation trying do. also, it's better because class integer
allows assign variable null
, can handy in kind of situations(e.g. better using 0). problem had way declared end of current operation , result back. used 0
way of stoping loop, however, 0
can used number within calculation. therefore, should scan input string if user entered =
sign, loop ends , gives result. then, can use feature given integer
class allows parse integer string , use them regular numbers. along that, had syntax "errors" , declarations could've come better way of writing it.
in overall, if wanted make real calculator, absolutely not best approach it, because may face many mathematical problems , exceptions, not bad start. fix of problems:
import java.util.scanner; public class switchloopnumbers { public static void main(string[] args) { string number; string process = ""; integer result = null; int option = 0; boolean startover = true; while (true) { scanner scan = new scanner(system.in); if (startover) { system.out.print("calculator menu" + "\n" + "****************" + "\n" + "1. add" + "\n" + "2. substract" + "\n" + "3. multiply" + "\n" + "4. divide" + "\n" + "****************" + "\n" + "enter option >> "); option = scan.nextint(); } switch (option) { case 1: system.out.print("enter number, or '=' result >> "); number = scan.next(); if ("=".equals(number)) { process = process.replacefirst("[ + \t]+$", " = "); break; } else if (result == null) { result = integer.parseint(number); process += number + " + "; option = 1; startover = false; continue; } else { result = result + integer.parseint(number); process += number + " + "; option = 1; startover = false; continue; } case 2: system.out.print("enter number, or '=' result >> "); number = scan.next(); if ("=".equals(number)) { process = process.replacefirst("[- \t]+$", " = "); break; } else if (result == null) { result = integer.parseint(number); process += number + " - "; option = 2; startover = false; continue; } else { result = result - integer.parseint(number); process += number + " - "; option = 2; startover = false; continue; } case 3: system.out.print("enter number, or '=' result >> "); number = scan.next(); if ("=".equals(number)) { process = process.replacefirst("[ * \t]+$", " = "); break; } else if (result == null) { result = integer.parseint(number); process += number + " * "; option = 3; startover = false; continue; } else { result = result * integer.parseint(number); process += number + " * "; option = 3; startover = false; continue; } case 4: system.out.print("enter number, or '=' result >> "); number = scan.next(); if ("=".equals(number)) { process = process.replacefirst("[ / \t]+$", " = "); break; } else if (result == null) { result = integer.parseint(number); process += number + " / "; option = 4; startover = false; continue; } else { result = result / integer.parseint(number); process += number + " / "; option = 4; startover = false; continue; } } system.out.println("the result of " + process.replace("+ 0 ", "") + result); system.out.print("back main menu? [y/n]: "); if (scan.next().equalsignorecase("y")) { process = ""; result = null; startover = true; } else if (scan.next().equalsignorecase("n")) { system.out.println("thank using calculator."); break; } else { system.out.println("wrong input!"); break; } } } }
Comments
Post a Comment