2013-10-11 5 views
0

Я, наконец, (почти) сделал небольшой проект калькулятора, над которым я работал. В настоящее время он работает с добавлением, вычитанием, умножением, делением, модулем, возведением в квадрат и отрицанием удвоений и отвечает на некоторые строки, такие как «выход», «четкое» и «помощь».Реализация блока try и catch

Мне просто нужна помощь в реализации блока try и catch, чтобы вернуть сообщение в консоли, такое как «Invalid Input», когда пользователь вводит что-либо, что не является числом после того, как консоль говорит «Введите первый номер» или «Введите второй номер".

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

import java.util.Scanner; 


public class exit { 

    static double num1; 
    static double num2; 
    static String operation; 

    public static void main(String[] args) { 

     boolean run = true; 

     while (run) { 

      System.out.println(" Enter: \n \b help for all usable operations \n continue to use the calculator"); 
      Scanner input = new Scanner(System.in); 
      String str1 = input.next(); 

      if (str1.equals("exit")) { 

       System.exit(0); 
      } else if (str1.equals("clear")) { 

       System.out.println("0.0"); 
      } else if (str1.equals("help")) { 
       System.out.println("please enter:\n + for addition \n - for subtraction \n * for  multiplication \n/for division \n -x for negation \n x^2 for squaring\n % for mod \n remember to only input integer or double values\n"); 

      } else if (str1.equals("continue")) { 

       System.out.println("\nEnter the first number:"); 
       num1 = input.nextInt(); 


       System.out.println 
         ("Display:" + num1); 

       System.out.println("Please enter operation:"); 
       operation = input.next(); 


       System.out.println("Enter the second number:"); 
       num2 = input.nextInt(); 
       System.out.println("Display:" + num2); 


       if ("+".equals(operation)) { 

        System.out.println((num1 + num2)); 
       } else if ("-".equals(operation)) { 

        System.out.println((num1 - num2)); 
       } else if ("/".equals(operation)) { 

        System.out.println((num1/num2)); 
       } else if ("*".equals(operation)) { 

        System.out.println((num1 * num2)); 
       } else if ("-x".equals(operation)) { 

        System.out.println(-num1); 
       } else if ("x^2".equals(operation)) { 

        System.out.println(num1 * num1); 
       } else if ("sqrt".equals(operation)) { 

        System.out.println(Math.sqrt(num1)); 

       } 


      } 

     } 
    } 
} 
+1

Почему вам нужно попробовать-поймать? вы можете проверять номера только в 'if' или вводить символы ввода только целым числам – user2377971

+1

http://stackoverflow.com/questions/3059333/validating-input-using-java-util-scanner –

ответ

3

Для проверки правильности номера по реализации try-catch, вы можете попробовать сделать что-то вроде этого:

try{ 
    Double num = Double.parseDouble(input.nextLine()); // This is just a sample 
    // int someInt = Integer.parseInt(someBasString); // Even this will throw NFE 
}catch(NumberFormatException NFE){ // If its not a valid number, you'll get this exception 
    // Do something on error 
} 
0

Вы можете использовать этот

try{ 
num1 = input.nextInt(); 
.. 
num2 = input.nextInt(); 
} 
catch(Exception ex) 
{ 
    System.out.println("Invalid input") 
} 

в сделайте это лучше, прежде чем поймать «Исключение», вы можете поймать «InputMismatchException» или любое другое исключение, которое вы ожидаете. Таким образом вы можете показать более релевантную информацию из поймать.

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