如何在Java中的字符串中的空格之间导出数字?

时间:2012-04-30 17:33:57

标签: java string

我想从键盘输入String这样的“5 4 34”。如何在空格之间导出数字?还想将它们导出到int[]数组中,然后在屏幕上打印出来。

5 个答案:

答案 0 :(得分:5)

您可以使用String.split("\\s")String拆分为String[],然后在每个元素上使用Integer.parseInt(),将该数字设为int

或者,您可以使用Scanner及其nextInt()方法

由于其他人已经向您展示了如何使用split(),这里有一个示例如何使用Scanner直接来自System.in(我假设那是什么)你想要,因为你说你是从键盘上读的,当然你可以使用任何ReadableString建立你的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]);

或者如果您想要int[]而不是Integer[]而不是最后一行,请使用:

int[] arr = new int[list.size()];
int i = 0;
for (Integer x : list) { 
    arr[i++] = x;
}

要打印数组,只需打印Arrays.toString()的结果:

System.out.println(Arrays.toString(arr));

答案 1 :(得分: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]);
}

答案 2 :(得分: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 ] );
    }

答案 3 :(得分:1)

String string = "5 4 34";
String[] components = string.split(" "); // [5, 4, 34]

答案 4 :(得分: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);
}