java - 如果用户输入只是数字或字母,如何使用 nextLine() 检查?

标签 java java.util.scanner

我对我的程序有疑问。我试图弄清楚,如何检查用户的 s.nextLine() 输入表单是否仅包含 1 到 49 形式的整数或字母。 我知道“eingabe”是一个字符串,所以我不能只使用 if 对吗?

我的问题是,我在 java 编程方面相对较新,并且不知道解决方案。 :/ 也许你能帮助我,那就太好了!

    public static int Scanner() {
        Scanner s = new Scanner(System.in);
        String eingabe = s.nextLine();

        //???

        return eingabe;
    }

最佳答案

import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class MyClass {
    public static void main (String[] args) {
       try {
                int x = Scanner();
                if(x >= 1 && x <= 49) {
                    System.out.println("Yes");
                }
                else {
                    System.out.println("No");
                }
        }
        catch(java.lang.NumberFormatException e) {
            System.out.println(e);
        }
        //Second Method Using Regex.
        try {
            int x = useRegex();
                if(x >= 1 && x <= 49) {
                    System.out.println("Yes");
                }
                else {
                    System.out.println("No");
                }
        } catch(java.lang.NumberFormatException e) {

            System.out.println(e);
        }
    }
    public static int Scanner() {
        Scanner s = new Scanner(System.in);
        String eingabe = s.nextLine();
        return Integer.parseInt(eingabe);
    }

    public static int useRegex() {
        Scanner s2 = new Scanner(System.in);
        String eingabe = s2.nextLine();
        Pattern p = Pattern.compile("^[\\+-]?\\d+$");
        Matcher m = p.matcher(eingabe);
        boolean b = m.matches();
        if(b) {
            return Integer.parseInt(eingabe);
        }

        else {
            throw new java.lang.NumberFormatException();
        }
    }

}  

这里我使用 try catch block 来处理输入格式错误的情况。如果错误则异常

java.lang.NumberFormatException

将会发生,如果它是一个有效的数字,那么我将检查它是否在 1 到 49 之间。 Integer.parseInt(num)用于将字符串转换为数字。 https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String) 。 Try catch 用于处理没有 . See here

我也提到过使用正则表达式。 See this for regex

关于java - 如果用户输入只是数字或字母,如何使用 nextLine() 检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47376785/

相关文章:

Java Scanner、NextDouble 用户输入购物 list

java - 根据真/假条件从 URL 绘制位图

java - 当 javadoc 和 @param 之间没有空行时,如何使 checkstyle 失败

Java 代码不等待扫描仪输入

java - 如何从java中的字符串指定类属性

java - 将 File 或 FileReader 与 Scanner 一起使用?

Java:继承方法中使用的私有(private)变量

java - 计算 Java 程序的运行时间

java - 将 jquery datepicker 中的日期插入到 oracle 数据库

java - 如何在 while 循环中使用 scan.nextInt 提示用户输入 int 类型?