获取NumberFormatException。我在这做错了什么? 我试图读取由空格分隔的整数数组。 有没有其他更好的方法来做同样的事情?我做了很多研究,大多数人都说split()比StringTokenizer和BufferedReader更好。
public static void main (String args[])
{
@SuppressWarnings("resource")
Scanner io = new Scanner(System.in);
int a=io.nextInt();
String input;
for(int i=0; i<a; i++)
{
input = io.nextLine();
int x= input.length();
String[] splitArr = input.split("\\s+");
int p[]= new int[x];
int q=0;
for (String par : splitArr) {
p[q++] = Integer.parseInt(par);}
System.out.println(p);
}
}
}
更新的代码,现在正在使用:
public static void main (String args[])
{
@SuppressWarnings("resource")
Scanner io = new Scanner(System.in);
int a=io.nextInt();
io.nextLine();
String input;
for(int i=0; i<a; i++)
{
int x= io.nextInt(); //size of array
io.nextLine();
input = io.nextLine();
String[] splitArr = input.split("\\s+");
int p[]= new int[x];
int q=0;
for (String par : splitArr) {
p[q++] = Integer.parseInt(par);}
for(int m=0; m<x; m++)
System.out.print(p[m]+" ");
}
}
}
答案 0 :(得分:1)
在io.nextLine();
之后(在您想要拍摄的任何字符串输入之前)执行int a=io.nextInt();
(不将其存储在任何地方)。
像
这样的东西 Scanner io = new Scanner(System.in);
int a=io.nextInt();
io.nextLine();
String input;
循环遍历数组以正确获取值;不是System.out.prinltn(p);
答案 1 :(得分:-1)
尝试做这样的事情
while(io.hasNext()){
try{
somevar = io.nextInt()
}
catch (NumberFormatException e){
//just pass through this non int value or do some error handlin
}
}