Исключение в основном потоке java.lang.NumberFormatException:

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

class TestClass {
public static void main(String args[]) throws IOException {
  BufferedReader inp = new BufferedReader (new InputStreamReader(System.in));
  String input = inp.readLine();
  //Scanner sc = new Scanner(System.in);
  StringTokenizer stk = new StringTokenizer(input);
  int n = Integer.parseInt(stk.nextToken());
  int q = Integer.parseInt(stk.nextToken());
  int [] arr = new int[n];
  int [] st = new int [n];
  for(int i =0;i<n;i++){
    arr[i] = Integer.parseInt(stk.nextToken());
     st[i] = fib(arr[i]);

  }  
while(q>0){
    int l = Integer.parseInt(stk.nextToken());
    int r = Integer.parseInt(stk.nextToken());
     System.out.println(gcd(st,l,r));
    q--;
}

Я постоянно получаю сообщение об ошибке:

Исключение в потоке «main» java.lang.NumberFormatException: для входной строки: «3 2» в java.lang.NumberFormatException.forInputString (NumberFormatException.java:65) в java.lang.Integer.parseInt (Integer.java:580) в java.lang.Integer.parseInt (Integer.java:615) в TestClass.main (Main.java:14)


person Ajay Chawda    schedule 10.06.2017    source источник
comment
Что вы вводите и что такое fib() и gcd()?   -  person Blasanka    schedule 10.06.2017
comment
Вы пытаетесь разобрать номер 3 2. Это ошибка, вы не можете разобрать строку с пробелами. Попробуйте использовать метод TryParse, чтобы избежать исключений, но если у вас неправильные входные значения, такие как 3 2, программа не будет печатать число ...   -  person Dani    schedule 10.06.2017
comment
Я не вижу способа получить эту конкретную ошибку из программы, которую вы здесь показали. Вы что-то нам не рассказываете?   -  person Dawood ibn Kareem    schedule 10.06.2017
comment
Можете ли вы показать ввод, который вы кормите System.in?   -  person SHG    schedule 10.06.2017


Ответы (1)


Попробуйте вместо этого использовать метод разделения:

Вместо:

StringTokenizer stk = новый StringTokenizer (ввод);

int n = Integer.parseInt (stk.nextToken ());

int q = Integer.parseInt (stk.nextToken ());

Использовать:

Строка в [] = input.split ("");

int n = Integer.parseInt (в [0]);

int q = Integer.parseInt (в [1]);

person Rafael Coelho    schedule 10.06.2017