我想String
从键盘输入这样的“5 4 34”。如何导出空格之间的数字?还想将它们导出到int[]
数组中,并在屏幕上打印出来。
问问题
697 次
5 回答
5
您可以使用将toString.split("\\s")
拆分,然后在每个元素上使用以将数字作为.String
String[]
Integer.parseInt()
int
或者,您可以使用 aScanner
及其nextInt()
方法
由于其他人已经向您展示了如何使用它来完成split()
,这里有一个如何使用的示例Scanner
,直接来自System.in
(我假设您想要什么,因为您说您是从键盘读取的,当然您可以使用任何Readable
或String
构建你的Scanner
):
代码:
Scanner inputScanner = new Scanner(System.in);
Scanner scanner = new Scanner(inputScanner.nextLine());
List<Integer> list = new ArrayList<Integer>();
while (scanner.hasNextInt()) {
list.add(scanner.nextInt());
}
Integer[] arr = list.toArray(new Integer[0]);
或者,如果您想要 anint[]
而不是 anInteger[]
而不是最后一行,请使用:
int[] arr = new int[list.size()];
int i = 0;
for (Integer x : list) {
arr[i++] = x;
}
要打印数组,只需打印以下结果Arrays.toString()
:
System.out.println(Arrays.toString(arr));
于 2012-04-30T17:36:49.177 回答
2
添加一个异常处理程序,您的状态就很好:
String values = "5 4 34";
String [] tokens = values.split("\\s+");
List<Integer> numbers = new ArrayList<Integer>();
for (String number : tokens) {
numbers.add(Integer.valueOf(number);
}
或者像这样:
String values = "5 4 34";
String [] tokens = values.split("\\s+");
int [] numbers = new int[tokens.length];
for (int i = 0; i < tokens.length; ++i) {
numbers[i] = Integer.valueOf(tokens[i]);
}
于 2012-04-30T17:36:26.607 回答
1
String[] stringArray = "5 4 34".split( " " );
int[] intArray = new int[ stringArray.length ];
for ( int i = 0 ; i < stringArray.length ; i++ )
{
intArray[ i ] = Integer.parseInt( stringArray[ i ] );
}
于 2012-04-30T17:35:30.770 回答
1
String string = "5 4 34";
String[] components = string.split(" "); // [5, 4, 34]
于 2012-04-30T17:36:04.573 回答
0
没有太多样板:
List <Integer> numbers = new ArrayList <Integer> ();
for (String number : "5 4 34";.split ("\\s+")) {
int v = Integer.parseInt (number);
System.out.println (v);
numbers.add (v);
}
或使用扫描仪:
Scanner scanner = new Scanner ("5 4 34");
List <Integer> list = new ArrayList <Integer> ();
while (scanner.hasNextInt()) {
int v = scanner.nextInt ();
list.add (v);
System.out.println (v);
}
于 2012-05-01T10:22:48.833 回答