【发布时间】:2012-01-29 21:13:00
【问题描述】:
我需要从用户那里获取一系列整数。 不会提示用户输入数字。输入将采用以下形式:
6
34 12 7 4 22 15
3
3 6 2
第一行表示第二行中的整数个数。 我首先尝试将第二行作为字符串读取,然后使用 StringTokenizer 在代码中将其分解为整数。因为这在我的程序中经常发生,这很耗时而且 我需要直接阅读它们。 我记得在 C++ 中它曾经相当简单。以下代码段用于解决问题。
for(i=0;i<6;i++)
cin>>a[i];
为此,我使用了 java.util.Scanner,我的代码如下所示:
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
Scanner src = new Scanner(System.in);
for(x=0;x<2;x++){
arraySize = Integer.parseInt(br.readLine());
for(i=0;i<arraySize;i++)
array[i] = src.nextInt();
}
在这种情况下,我收到以下错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "34 12 7 4 22 15"
我对建议持开放态度,并且不会只使用 Scanner。如果有任何其他方法可以实现这一点,我就是游戏。
【问题讨论】:
-
我的猜测是 arraySize = Integer.parseInt(br.readLine());引发异常?我说的对吗?
-
StringTokenizer 有那么耗时吗?你分析了吗?
-
这是作业吗?如果是,请添加
homework标签... -
我在略读并错过了您已经尝试过的提及后,在我的回答中建议了 StringTokenizer。我也很好奇你为什么说 StringTokenizer 花了很长时间。运行需要很长时间还是编程需要很长时间?前者可能会暴露您系统上的问题。后者会暴露你的实现设计中的问题。
标签: java string java.util.scanner