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

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -