Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用scanner存储逗号分隔的参数_Java - Fatal编程技术网

Java 如何使用scanner存储逗号分隔的参数

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获取用户输入,并希望存储命令行中给出的2个参数,但我只能得到一个参数。 此外,我认为如果存在nextInt,hasNextInt()将返回布尔值,但是当我输入非int值时,它不会中断循环

在发布这些问题之前,我已经在网上和stackoverflow上查看了来源,但没有得到我想要的

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值结尾。您可以发布一些示例输入/输出以及预期的输出吗?