如果用户输入只是一个数字或字母,我如何检查nextLine()?

时间:2017-11-19 12:21:20

标签: 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;
    }

1 个答案:

答案 0 :(得分:1)

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块来处理输入格式是否错误。如果它是错误的那么异常

  

java.lang.NumberFormatException

将发生,然后如果它是有效数字,那么我正在检查它是否在1到49之间。Integer.parseInt(num)用于将String转换为数字。 https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String)。 try catch用于处理异常而不用。 See here

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