Java-是否有类似于String的hasNextInt()或hasNextDouble()的方法?我想检查用户输入的内容是否只是文本而不是数字

问题描述 投票:0回答:2

我对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
2个回答
1
投票

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

详细信息在javadocsScanner中。

所以剩下要做的就是“实现”正则表达式以匹配“非数字”标记。


0
投票

将您的输入作为字符串,并检查输入是数字还是字符串。

static boolean isNumber(String s) 
        { 
            for (int i = 0; i < s.length(); i++) 
            if (Character.isDigit(s.charAt(i))  
                == false) 
                return false; 

            return true; 
        } 
© www.soinside.com 2019 - 2024. All rights reserved.