错误在a=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 :(得分:0)
这是因为in.nextInt()之后扫描仪的位置;将在输入整数之后。
in.nextLine();然后循环内部将不读任何内容。
解决方案
1)将扫描仪的位置设为下一个新线
t= Integer.parseInt(in.nextLine());
2)拥有一个新的扫描仪对象
Scanner in2 = new Scanner(System.in);
String input=in2.nextLine();
答案 1 :(得分:0)
只需在for循环中创建新的Scanner对象
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);
}