好的,所以我们应该编写一个程序,只读取 mm/dd/yyyy 格式的日期的正确输入。到目前为止,我所学到的只是 if-else 语句,稍微涉及了枚举、字符串处理、switch 语句,仅此而已。我认为最好的方法是使用/分隔符来分别捕获每个月、日和年的输入,但是当我运行您在下面看到的内容时,程序实际上只是在您输入后停止,比如 5/16/1985……以澄清程序实际上仍在运行,但没有任何反应(即预期的字符串过程及其值的输出)。一旦我输入日期,它就什么也不做,我想知道为什么?分隔符不起作用吗?我是否正在考虑以错误的方式使用分隔符?它让我发疯,哈哈,任何建议都会很好!
还想补充一点,我尝试在分隔符后创建字符串(如下所示)并尝试使用 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);
最佳答案
更改分隔符以包含换行符:
keyboard.useDelimiter("[/\n]");
这样你的最后一个 .next()
调用就会有一些需要解析的内容。您还可以使用keyboard.hasNext()来确定是否还有任何内容需要解析(如果没有,您可能需要处理这种情况,因为输入了无效日期)。
您的代码在当前状态下永远运行的原因是您使用了 3 个 next()
调用,但只提供了 2 个 \
,当您按照以前的方式添加第三个 \
时,您的程序将终止,但通过将换行符添加到要分隔的事物列表(\n
字符),最后一个 next()
调用将拉出最后一个斜杠和换行符之间的内容.
关于java - 为什么这个分隔符没有发挥应有的作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665404/