2

好的,所以我们应该制作一个程序,它可以简单地读取格式为 mm/dd/yyyy 的日期的正确输入。到目前为止,我所学到的只是 if-else 语句、枚举的一些内容、字符串处理、switch 语句,仅此而已。我认为解决此问题的最佳方法是使用 / 分隔符来分别捕获每个月的日和年输入,但是当我运行您在下面看到的内容时,程序实际上会在您输入后停止,例如 1985 年 5 月 16 日......澄清程序实际上仍在运行,但没有任何反应(即预期的字符串过程及其值的输出)。一旦我输入日期,它什么也不做,我想知道为什么?分隔符不起作用吗?我是否正在考虑以错误的方式使用分隔符?它让我发疯,哈哈,任何建议都会很好!

还想补充一点,我尝试了在分隔符之后创建字符串(如下所示)和尝试使用 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);
4

1 回答 1

1

更改您的分隔符以包括换行符:

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

这样你的最后一个.next()电话就会有一些东西需要解析。您还可以使用keyboard.hasNext()来确定是否还有任何要解析的内容(如果没有,您可能需要处理这种情况,因为输入了无效的日期)。

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

于 2013-02-02T19:08:44.953 回答