java - 要求用户在Java循环中重新输入某些字符串时如何仅保留文本打印一次
问题描述
我想要求用户输入字符串类型的数字,然后检查它是否是数字,如果不是,则再次要求重新输入字符串。我有这样的代码:
System.out.print("Enter first number: ");
firstNum = scan.next();
while(validateNum(firstNum) == false) {
System.out.print("Please, enter number only: ");
firstNum = scan.next();
}
这是 validateNum 方法:
private static boolean validateNum(String num) {
if (num.matches("[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?")){
return true;
}
return false;
}
但问题是,当我测试它并输入一些带空格的文本时,它会打印“请,仅输入一个数字”,与输入字符串中的空格一样多。我试图从字符串中删除空格然后检查它,但它仍然给出了许多打印。
解决方案
您正在使用scan.next()
. 这将返回空格之前的内容。您想scan.nextLine()
扫描用户输入的整行
这是该类的文档及其Scanner
方法。
简而言之:
next()
:扫描下一个完整的令牌
nextLine()
:扫描整行
推荐阅读
- c++ - 使用 S3Client::GetObject 从 S3 预签名 URL 读取
- c - 在拼字游戏中输入大写字母总是返回 0
- javascript - 如何添加对机器人消息的反应
- linux - 当从缓冲区直接复制值时,strscp 将永远循环
- php - 合并字段不通过 TinyButStrong 合并 word 文档中的数据
- powershell - 如何使用 QR 码和扫描仪发送键盘快捷键 SHIFT+CTL+F
- java - 如果不在构造函数中,“this”在 Java 的 void 方法中会做什么?
- sql - 如何在不使用所有者的情况下使用表?
- angular - 如何跳过订阅结果?
- api - Pentaho 限制 API