2015-08-21 2 views
0

Ошибка около a=Integer.parseInt(next_split[0]); Что происходит? Почему ошибка?Ошибка при попытке использования Integer.parseInt (next_split [0]);

error:Exception in thread "main" java.lang.NumberFormatException: For input string: 
    at java.lang.NumberFormatException.forInputString(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at JavaLoops.main(JavaLoops.java:(line_number_in_my_code) 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.Scanner; 

public class JavaLoops { 

public static void main(String[] args) throws Exception { 

    int t,a,b,n; 


    Scanner in = new Scanner(System.in); 
    t= in.nextInt(); 

    for(int i=0;i<t;i++) 
    { 
     String input=in.nextLine(); 
     String[] next_split = input.split(" "); 
     System.out.println(next_split[0]); 

     a=Integer.parseInt(next_split[0]); 
     b=Integer.parseInt(next_split[1]); 
     n=Integer.parseInt(next_split[2]); 

     calculate(a,b,n); 

    } 
} 
static void calculate(int a,int b,int n) 
{ 
    int constant=a+((int) Math.pow(2,0)*b); 
    System.out.print(constant+" "); 
    int res=0; 

    for(int i=1;i<n;i++) 
    { 
     res=constant+((int) Math.pow(2,i)*b); 
     constant=res; 
     System.out.print(res+" "); 
    } 

} 
} 
+0

Yo u передают строку, которая не может быть преобразована в целое число. Просто используйте отладчик для получения дополнительной информации. –

+0

Что вы принимаете? Что отображается в 'System.out.println (next_split [0])'? – MyPasswordIsLasercats

+0

ввод: первая строка: 2-я строка: 0 2 10, поэтому 2 из первой строки переходит в переменную 't', а вторая строка берется в следующем цикле: ошибка возникает сразу после ввода первого строка, то есть 2 – stefan

ответ

0

Это происходит потому, что положение сканера после in.nextInt(); будет сразу после ввода целого числа.

in.nextLine(); внутри цикла ничего не будет читать.

Solution либо

1) Сделать позицию для сканера к следующей новой линии

t= Integer.parseInt(in.nextLine()); 

2) имеют новый объект Сканер

Scanner in2 = new Scanner(System.in); 
String input=in2.nextLine(); 
0

Просто создать новый объект Сканер для цикла

for(int i=0;i<t;i++) 
    { 
     Scanner s = new Scanner(System.in); 

     String input=s.nextLine(); 
     String[] next_split = input.split(" "); 
     System.out.println(next_split[0]); 

     a=Integer.parseInt(next_split[0]); 
     b=Integer.parseInt(next_split[1]); 
     n=Integer.parseInt(next_split[2]); 

     calculate(a,b,n); 

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