使用switch检查String是否为数字

时间:2015-10-07 10:11:07

标签: java string numbers switch-statement

我必须制作一个程序,通过使用String来判断我在键盘中输入的switch 是否为数字。我知道如何通过try和catch来做到这一点,但我不知道如何使用switch来做到这一点。

任何提示?

4 个答案:

答案 0 :(得分:4)

您需要检查String中的每个字符。这样的事情可能会奏效。

static boolean isNumber(String s) {
    if (s == null) {
        // Debatable.
        return false;
    }
    int decimalCount = 0;
    for (int i = 0; i < s.length(); i++) {
        switch (s.charAt(i)) {
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                // These are all allowed.
                break;
            case '.':
                if (i == 0 || decimalCount > 0) {
                    // Only allow one decimal in the number and not at the start.
                    return false;
                }
                decimalCount += 1;
                break;
            default:
                // Everything else not allowed.
                return false;
        }
    }
    return true;
}

答案 1 :(得分:3)

在Java7之前,您可以使用switch(String)语句。

但是在这里你有足够的switch(int)和一点解决方法:

public static void main(String[] args) throws Exception {
    String a = "2";

    switch (Integer.parseInt(a)) {
    default: 
        System.out.print("is a number");
        break;
    }
}   

答案 2 :(得分:0)

这是我向一些同学询问并安静思考的解决方案。

public static void main(String[] args) {
    // TODO Auto-generated method stub 


    Scanner entry = new Scanner(System.in);
    String myNumber;
    int tf;
    myNumber = entry.next();

    try {
        Double.parseDouble(myNumber);
        tf = 1;
    }

    catch (Exception e) {
        tf = 0;
    }


    switch(tf) {

    case 1:
        System.out.println("Is a number");
    break;

    default:
        System.out.println("No es un número");
        break;

    }




}

感谢社区非常好!

答案 3 :(得分:0)

我提出了一个更短的代码,但它使用了正则表达式,如果Halo刚刚开始使用Java,他可能还没有看过那个话题。但是它也回答了这个问题,所以它是:

Scanner scanner = new Scanner(System.in);
String expression = scanner.nextLine();
String matches = new Boolean(expression.matches("\\d+")).toString();
switch (matches) {
case "true":
    System.out.println("IT'S a number");
    break;
case "false":
    System.out.println("NOT a number");
}
scanner.close();