首页 > 解决方案 > 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);
    }

}

标签: java

解决方案


您需要使用的是hasNext(String)orhasNext(Pattern)方法。这些测试下一个标记(使用当前分隔符设置)是否与正则表达式匹配。使用令牌有相应next的方法。

详细信息在用于.Scanner

因此,您唯一要做的就是“实施”正则表达式以匹配您的“非数字”标记。


您也可以调用next()以获取下一个令牌并测试它是否“不是数字”。但这将消耗令牌。


推荐阅读