2014-12-23 3 views
-4

В 15-й строке ch = s1.charAt(0);, почему ch не получает 0-го слова s1, то есть оператора.IndexOutOfBoundsException при получении символьного ввода от пользователя

Я попытался без использования методы примерки поймать, но тогда ошибка была относительно исключения

и теперь без исключения, без каких-либо ошибок, но программа не попросить оператор и непосредственно после ввода 1-й и второе значение, это показывает исключение «не может сделать это»

пожалуйста, напишите ваши добрые ответы, спасибо

import java.util.Scanner; 

class apples { 
    public static void calcu() { 
     try{ 
      int a, b; 
      String s1; 
      char ch; 
      Scanner sc = new Scanner(System.in); 
      System.out.print("Enter the 1st value : "); 
      a = sc.nextInt(); 
      System.out.print("Enter the 2nd value : "); 
      b = sc.nextInt(); 
      System.out.print("Enter the operator : "); 
      s1 = sc.nextLine(); 
      ch = s1.charAt(0); 
      System.out.println("yo"); 

       switch(ch){ 
       case '+' : System.out.print("sum is " + (a+b)); 
       case '-' : System.out.print("Substraction is : " +(a-b)); 
       case '*' : System.out.print("Multiplication is : " + (a*b)); 
       case '/' : System.out.print("Multiplication is : " + (a/b)); 
       default : System.out.print("wtf yo"); 
       } 
     } 
     catch(Exception e) { 
      System.out.println("cant do that "); 
     } 

    } 

    public static void main(String args[]) { 
     apples obj = new apples(); 
     obj.calcu(); 
    } 
} 
+0

Мы не знаем, что ваш вход, или ваш ожидаемый результат. Тот факт, что вы не затрудняетесь регистрировать то, что исключает * *, не помогает ... пожалуйста, включите сведения об исключении в ваш журнал (например, 'System.out.println (« Ошибка: »+ e); ') –

+0

Я просто делаю нормальный калькулятор sir, и узнал, как вводить переменную символа –

+0

Это не помогает нам диагностировать проблему, хотя - она ​​не говорит нам, что вы ввели, или что-нибудь об исключении. –

ответ

3

Вы должны заменить nextInt с nextLine:

 System.out.print("Enter the 1st value : "); 
     a = Integer.parseInt(sc.nextLine()); 
     System.out.print("Enter the 2nd value : "); 
     b = Integer.parseInt(sc.nextLine()); 
     System.out.print("Enter the operator : "); 
     s1 = sc.nextLine(); 
     ch = s1.charAt(0); 

Когда s1 = sc.nextLine(); следует b = sc.nextInt(), он возвращает пустую строку, так как она возвращает конец строки, которая содержала что Int. Когда вы пытаетесь получить первый символ пустой строки, вы получаете исключение IndexOutOfBoundsException.

+0

да, сэр, ты понял. благодаря ..! –

+0

Кстати, этот метод parseInt подпадает под какую категорию сэр? –

+1

@TakatSingh Что вы подразумеваете под «подпасть под какую категорию»? Это статический метод класса Integer. – Eran

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