在Java中,从单行字符串中获取数字的最佳方法是什么?

时间:2014-08-08 02:11:14

标签: java string formatting

例如:

输入: 14 5 1

将这三个值分成三个int变量的最佳方法是什么?

另外,如果我们处理双值会有什么不同吗?

3 个答案:

答案 0 :(得分:4)

使用Java 8,您可以将整个字符串转换为数字流,如下所示:

IntStream intStream = Arrays.stream(input.split(" ")).mapToInt(Integer::parseInt);

从那里,您可以将Stream转换为数组:

intStream.toArray();

您可以直接采取行动:

intStream.forEach(n -> {
   // do something here with n
});

......还有更多:http://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html

编辑正如克里斯指出的那样,IntStream还有一些专门为整数量身定制的实用程序:http://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html

玩得开心!

答案 1 :(得分:2)

使用Scanner类。

Scanner scan = new Scanner("14 5 1");
System.out.println(scan.nextInt());
System.out.println(scan.nextInt());
System.out.println(scan.nextInt());

此代码段将输出

14
5
1

使用nextDouble()时,您可以使用nextInt()代替double

如果你不知道你将拥有多少个数字,你可以使用while循环来继续阅读数字。您可以将上述内容重写为

Scanner scan = new Scanner("14 5 1");
while(scan.hasNextInt())
    System.out.println(scan.nextInt());

输出应保持不变。如果它对您的程序来说更简单,请使用它。

答案 2 :(得分:2)

你可以在一行中得到这些数字,假设你已经这样做并存储在String s; 你可以通过String [] k = String s.split(" ");将它们拆分成一个字符串数组,这会将String s拆分成一个由空格分隔的一个字符串数组中的3个不同的字符串,在你这样做后,将它们转换为你想要的任何地方使用这些,

int a = Integer.parseInt(k[0]);
double b = Integer.parseDouble(k[1]);
double c = Integer.parseDouble(k[2]);