为什么这个分隔符不能正常工作?

时间:2013-02-02 19:06:18

标签: java string delimiter

好的,所以我们应该制作一个程序,只需读取格式为mm / dd / yyyy的日期的正确输入。到目前为止我所学到的只是if-else语句,触及enum的一点,字符串处理,switch语句,而且就是这样。我认为最好的解决方法是使用/的分隔符分别捕获每个月的日期和年份输入,但是当我运行你在下面看到的内容时,程序字面上只是在你输入后停止,比如5/16/1985 ......澄清程序实际上仍在运行,但没有任何反应(即预期的字符串进程及其值的输出)。一旦我输入日期,它什么也没做,我想知道为什么?分隔符不起作用吗?我想以错误的方式使用分隔符吗?它让我疯狂lol,任何建议都会很好!

还想补充一点,我尝试了这个,在分隔符之后创建字符串(如下所示),并且只是尝试使用nextInt捕获INT值.....仍然做同样的事情,并且在初始化后没有任何反应日期条目....

Scanner keyboard = new Scanner(System.in);

keyboard.useDelimiter("/");

String month = keyboard.next();
String day = keyboard.next();
String year = keyboard.next();

int monthi = Integer.parseInt(month);
int dayi = Integer.parseInt(day);
int yeari = Integer.parseInt(year);

System.out.println(monthi);
System.out.println(dayi);
System.out.println(yeari);

1 个答案:

答案 0 :(得分:1)

将分隔符更改为还包含换行符:

keyboard.useDelimiter("[/\n]");

通过这种方式,您的上一次.next()调用将需要解析。您还可以使用keyboard.hasNext()来确定是否还有任何内容需要解析(如果没有,您可能需要处理该情况,因为输入的是无效日期)。

您的代码在当前状态下永远运行的原因是,您使用了3 next()次调用,但只提供了2 \次,当您添加第3 {{1}时,您的程序将会终止它以前的方式,但是通过在要分隔的事物列表中添加换行符(\字符),最后一个\n调用将在最后一个斜杠和换行符之间拉出什么。