Java 如何使用scanner存储逗号分隔的参数
我使用scanner获取用户输入,并希望存储命令行中给出的2个参数,但我只能得到一个参数。 此外,我认为如果存在nextInt,hasNextInt()将返回布尔值,但是当我输入非int值时,它不会中断循环 在发布这些问题之前,我已经在网上和stackoverflow上查看了来源,但没有得到我想要的Java 如何使用scanner存储逗号分隔的参数,java,Java,我使用scanner获取用户输入,并希望存储命令行中给出的2个参数,但我只能得到一个参数。 此外,我认为如果存在nextInt,hasNextInt()将返回布尔值,但是当我输入非int值时,它不会中断循环 在发布这些问题之前,我已经在网上和stackoverflow上查看了来源,但没有得到我想要的 Scanner s = new Scanner(System.in); int first = 0; int second = 0; System.out.println("Please ente
Scanner s = new Scanner(System.in);
int first = 0;
int second = 0;
System.out.println("Please enter number: ");
s.useDelimiter(",");
while (s.hasNextInt()) {
first = s.nextInt();
System.out.print("firstArgument: " + first + "\n");
second = s.nextInt();
System.out.print("secondArgument: " + second + "\n");
}
问题是,您的代码对每个奇数编号的输入调用
s.hasnetint()
,但它尝试在不执行检查的情况下获取每个偶数编号的输入。因此,它需要这样的输入:
1,2,3,4,5,6,done
1,2,3,4,done
1,2,done
但是,这样的输入会导致异常:
1,2,3,4,5,done
1,2,3,done
1,done
请注意,非数字输入必须出现在同一行的逗号之后
要解决此问题,请在读取第二个值之前添加检查:
while (s.hasNextInt()) {
first = s.nextInt();
if (!s.hasNextInt()) break'
second = s.nextInt();
System.out.print("firstArgument: " + first + "\n");
System.out.print("secondArgument: " + second + "\n");
}
如果要允许其他字符(如行尾标记)结束逗号分隔列表,请使用不同的分隔符表达式:
s.useDelimiter("[,\n]");
我试过这么做,但还是没有得到第二个论点。我相信中断会中断循环。@Mani是的,
break
在没有其他有效输入时中断循环。那么这是如何实现存储两个输入的呢。例如,我输入1,2
我想要first=1
和second=2
。有了中断,我只得到了第一个
,我也可以不中断就这样做。@Mani这是因为逗号后没有“错误”的输入。答案的第二部分(即分隔符)说明了这一点。请注意,只有在输入一个非空字符串时,循环才会停止。该字符串不是数字逗号分隔输入后面的数字。我理解。非常感谢。它既存储参数,又以非int值结尾。您可以发布一些示例输入/输出以及预期的输出吗?