我尝试开始使用 BufferedReader 而不是 Scanner。在为 codechef (SMRSTR) 上的问题进行编码时,我尝试使用 StringTokenizer 以空格分隔的输入,但它引发了异常,即NumberFormatException。我在 StackOverflow 上发现了一些关于它的问题,但我认为我的问题不同,所以我发布了一个。
输入:1
2 3
2 3
5 100 8
我正进入(状态:
线程“主”java.lang.NumberFormatException 中的异常:对于输入字符串:
java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer的“2 3” .parseInt(Unknown Source)
at A.main(A.java:11)
我正在正确地获得第一个输入 tbr.readLine();
但接下来的输入n,q
给出了提到的异常。我认为问题出在 StringTokenizer 的 nextToken 中,但仍不清楚。
这是代码:
import java.io.*;
import java.util.*;
class A{
public static void main(String arg[]) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer s = new StringTokenizer(br.readLine());
int t= Integer.parseInt(br.readLine());
while(t-->0)
{
int n,q,i;
n=Integer.parseInt(s.nextToken());
q=Integer.parseInt(s.nextToken());
int D[]= new int[n];
int Q[]=new int[q];
long x=1;
for(i=0;i<n;i++)
{
D[i]=Integer.parseInt(s.nextToken());
x=x*D[i];
}
for(i=0;i<q;i++)
{
Q[i]=Integer.parseInt(s.nextToken());
if(x>1000000000)
Q[i]=0;
else
Q[i]=(int)(Q[i]/x);
}
for(i=0;i<q;i++)
System.out.print(Q[i]+" ");
System.out.println("");
}
}
}