java - Java-是否有类似于 hasNextInt() 或 hasNextDouble() 的方法用于字符串?我想检查用户输入是否只是文本而不是数字
问题描述
我对 Java 很陌生,当我试图检查用户输入是否是文本(字符串)而不是数字时,我被卡住了。hasNext()、next()、nextLine() 不一定会检查字符串,所以我不确定如何完成。
import java.util.Scanner;
public class CalculateOne {
public static void main(String[] args) {
System.out.print("Enter a or b");
Scanner scan = new Scanner(System.in);
boolean isItString = scan.hasNextLine();
while (! isItString) {
System.out.print("Invalid Input! \n");
scan.next();
}
String type = scan.nextLine();
System.out.println("you chose "+type);
}
}
解决方案
您需要使用的是hasNext(String)
orhasNext(Pattern)
方法。这些测试下一个标记(使用当前分隔符设置)是否与正则表达式匹配。使用令牌有相应next
的方法。
详细信息在用于.Scanner
因此,您唯一要做的就是“实施”正则表达式以匹配您的“非数字”标记。
您也可以调用next()
以获取下一个令牌并测试它是否“不是数字”。但这将消耗令牌。
推荐阅读
- php - 当一个值仅以数组中的内容开头时,为什么 in_array 返回 true
- assembly - 在 Assembly 中声明具有多个变量的函数。(大会问题)
- sharepoint - Sharepoint Office 365 视频不显示在 IE11 中
- php - 未捕获的 Twig\Error\SyntaxError:哈希键必须后跟冒号 (:)
- networking - Godot 网络帮助:“RPC 'updateDataPos' is not allowed from: 1. Mode is 0, master is 1.”
- c# - 如何从列表中有列表的 DbContext 中删除记录
- typescript - 从 Typescript 项目中的外部文件继承并声明放大生成的类型
- php - CakePHP 忽略在表异常中找不到记录
- html - 在边缘浏览器中使用 CSS vars 中的 URL
- python - 如何实现 JQuery 确认对话框弹出