2016-10-23 4 views
1

Я новичок в java и этом форуме. Я написал код для простого калькулятора. Работает. Но как я могу повторить основной метод, если я (скажем) положил «=» вместо «(+, -, *, /)»? Должен ли я использовать цикл или что-то еще? Заранее спасибо!Повторение основного метода

import java.util.Scanner; 

public class SimCal { 

    public static int add(int a, int b) { 
     return a + b; 
    } 

    public static int sub(int a, int b) { 
     return a - b; 
    } 

    public static int mul(int a, int b) { 
     return a * b; 
    } 

    public static int div(int a, int b) { 
     return a/b; 
    } 

    public static void main(String[] args) { 

     Scanner scan1 = new Scanner(System.in); 
     System.out.println("What do you want to do (+, -, *, /)? "); 
     String input1 = scan1.nextLine(); 

     if (!input1.equals("+") && !input1.equals("-") && !input1.equals("*") && !input1.equals("/")) { // if wrong input given 
      System.out.println("You must Enter a valid operator"); 
     } else { 
      Scanner scan2 = new Scanner(System.in); 
      System.out.println("Enter first number: "); 
      int input2 = scan2.nextInt(); 

      Scanner scan3 = new Scanner(System.in); 
      System.out.println("Enter second number: "); 
      int input3 = scan3.nextInt(); 

      if (input1.equals("+")) { 
       System.out.println(add(input2, input3)); 
      } else if (input1.equals("/")) { 
       System.out.println(div(input2, input3)); 
      } else if (input1.equals("-")) { 
       System.out.println(sub(input2, input3)); 
      } else { 
       System.out.println(mul(input2, input3)); 
      } 
      scan1.close(); 
      scan2.close(); 
      scan3.close(); 
     } 
    } 
} 
+0

Использовать корпус переключателя внутри во время цикла. –

+1

Не создавайте несколько сканеров. Повторно используйте 'scan1' вместо' scan2' и 'scan3'. –

ответ

0

Я немного не уверен, что вы просите, но я понял, что вы хотите, чтобы иметь возможность повторить калькулятор без необходимости запускать его снова. Этого можно достичь, используя блок boolean и while.

Вот пример:

import java.util.Scanner; 

public class SimCal { 

    public static int add (int a, int b){ 
     return a+b; 
    } 
    public static int sub (int a, int b){ 
     return a-b; 
    } 
    public static int mul (int a, int b){ 
     return a*b; 
    } 
    public static int div (int a, int b){ 
     return a/b; 
    } 
    public static boolean done = false; 


    public static void main(String[] args){ 


     Scanner scan1 = new Scanner(System.in); 
     Scanner scan2 = new Scanner(System.in); 
     Scanner scan3 = new Scanner(System.in); 
     while (!done) { 
      System.out.println("What do you want to do (+, -, *, /, quit)? "); 
      String input1 = scan1.nextLine(); 

      if (!input1.equals("+") && !input1.equals("-") && !input1.equals("*") && !input1.equals("/") && !input1.equals("quit")) 
      { //if wrong input given 
       System.out.println("You must Enter a valid operator"); 
      } 
      else if (input1.equals("quit")) 
      { 
       done = true; 
       scan1.close(); 
       scan2.close(); 
       scan3.close(); 
      } 
      else 
      { 
       System.out.println("Enter first number: "); 
       int input2 = scan2.nextInt(); 


       System.out.println("Enter second number: "); 
       int input3 = scan3.nextInt(); 

       if (input1.equals("+")) 
       { 
        System.out.println(add(input2, input3)); 
       } 
       else if (input1.equals("/")) 
       { 
        System.out.println(div(input2, input3)); 
       } 
       else if (input1.equals("-")) 
       { 
        System.out.println(sub(input2, input3)); 
       } 
       else 
       { 
        System.out.println(mul(input2, input3)); 

       } 

      } 
     } 
    } 
} 

Я надеюсь, что это полезно. Как упоминал Энди Тернер, вы должны стараться не использовать несколько сканеров.

EDIT: Я забыл закрыть 2 сканера. Кроме того, случаи переключения могут быть лучшим способом сделать это, как упомянуто Сауравом Саху.

+0

Спасибо, вот что я имел в виду. –

Смежные вопросы