java - 为什么这个分隔符没有发挥应有的作用?

标签 java string delimiter

好的,所以我们应该编写一个程序,只读取 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/

相关文章:

coffeescript 中类似 python 的字符串插值

ruby - 如何在不保留分隔符的情况下拆分字符串?

c++ - 使用多个定界符拆分字符串并将其保存到 vector 中

java - 如何使用 Aspectj 从方法执行切入点中排除字段执行

java - 通过(伪)直接调用该处理程序方法来测试 Spring Controller - 好还是坏?如何实现?

javascript - 字符串中的第一个字母增加,最后一个字母减少

reactjs - 开 Jest 测试: custom currency/decimal formatters showed wrong delimiters

java - 使用 cordova 构建 apk 失败

java - 从jdk到(包含)jre的java.exe有什么区别?

java - 查找未在 java 中关闭的 xml 标记