试图确定字符串是否为整数

Har*_*You 1 java string integer

说明:给定一个字符串,确定它是否是整数.例如,字符串"123"是整数,但字符串"hello"不是.

如果字符串中的所有字符都是数字,则为整数.

如果是整数则返回true,否则返回false.

提示:有一个方法Character.isDigit(),它将char作为参数并返回一个布尔值.

我到目前为止:

public boolean isInteger(String str) {
    if(Character.isDigit(str.charAt(0)) == 0) {
        return false;
    }
    for (int i = 0; i < str.length(); i++) {
        if(Character.isDigit(str.charAt(i))) {
            break;
        } else {
            return false;
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是返回字符串"101"的布尔值而根本没有字符串("")

cri*_*007 6

您可以使用正则表达式.

return str.matches("\\d+");
Run Code Online (Sandbox Code Playgroud)

但是,对于负数不会起作用.

您也可以使用Integer.parseInt并捕获NumberFormatException并相应地返回true/false.

或者,您不应该破坏您找到的第一个数字,因为您需要检查所有字符,直到找到一个不是数字的字符.同样,这不会捕获负数

public boolean isInteger(String str) {
    if(str == null || str.trim().isEmpty()) {
        return false;
    }
    for (int i = 0; i < str.length(); i++) {
        if(!Character.isDigit(str.charAt(i))) {
            return false;
        } 
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,选项2是最好的,但您的指示似乎暗示您需要迭代字符值