在java中格式化输入的流数据

fruv7luv  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(350)

我很好奇如何在java中从用户那里获取格式化的输入数据,例如如果用户输入 1,2,3 当输入如下所示时,如何在数组中获取这些数字:
Scanner s = new Scanner(); String inputString = s.nextLine(); 我能得到一个号码 Integer num = Integer.parseInt(inputString) 但我不确定如何处理多个数字

0vvn1miw

0vvn1miw1#

好吧,你会用。。。扫描仪。这就是为什么。但是,开箱即用扫描仪假定所有输入都用空格隔开。在您的示例中,输入由逗号分隔,后跟/后跟零个或多个空格。
你需要告诉扫描仪:

Scanner s = new Scanner(System.in);
s.useDelimiter("\\s*,\\s*");
s.nextInt(); // 1
s.nextInt(); // 2
s.nextInt(); // 3

这个 "\\s*,\\s*" 认为是一个regexp;有点奇怪的概念。这就是regexpese,表示“任意数量的空格(甚至没有),然后是逗号,然后是任意数量的空格”。
你可以用 ", " 也可以,只要你的输入看起来像那样。
一般来说,如果你有一个相当简单的字符串,你可以使用 someString.split("\\s*,\\s*") -这里也使用正则表达式。这将返回一个字符串数组,其中包含逗号之间的所有内容:

String[] elems = "1, 2, 3".split("\\s*,\\s*");
for (String elem : elems) {
    System.out.println(Integer.parseInt(elem));
}
> 1
> 2
> 3

相关问题