如何检查一个string是否是数字?
我有一个GPA程序,它与equalsIgnoreCase()
方法比较两个string,字母“A”的用户input,它检查是否他们把“A”。 但是现在我想添加一个exception,并在数字是input时执行错误消息。 我想让程序认识到整数input与string不一样,并给出错误信息。 我可以使用哪种方法比较types为stringvariables的inputtypes为int ,并抛出exception?
http://www.coderanch.com/t/405258/java/java/String-IsNumeric上有许多选项;
还有一个是
public boolean isNumeric(String s) { return s != null && s.matches("[-+]?\\d*\\.?\\d+"); }
可能是矫枉过正,但Apache Commons NumberUtils似乎也有一些帮手。
如果您被允许使用第三方库,build议如下。
NumberUtils.isDigits(str:String):boolean NumberUtils.isNumber(str:String):boolean
使用下面的方法,
public static boolean isNumeric(String str) { try { double d = Double.parseDouble(str); } catch(NumberFormatException nfe) { return false; } return true; }
如果你想使用正则expression式,你可以使用如下,
public static boolean isNumeric(String str) { return str.matches("-?\\d+(\\.\\d+)?"); //match a number with optional '-' and decimal. }
您也可以使用ApacheCommons StringUtils.isNumeric – http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#isNumeric(java.lang.String )
用这个
public static boolean isNum(String strNum) { boolean ret = true; try { Double.parseDouble(strNum); }catch (NumberFormatException e) { ret = false; } return ret; }
public static boolean isNumeric(String string) { if (string == null || string.isEmpty()) { return false; } int i = 0; int stringLength = string.length(); if (string.charAt(0) == '-') { if (stringLength > 1) { i++; } else { return false; } } if (!Character.isDigit(string.charAt(i)) || !Character.isDigit(string.charAt(stringLength - 1))) { return false; } i++; stringLength--; if (i >= stringLength) { return true; } for (; i < stringLength; i++) { if (!Character.isDigit(string.charAt(i)) && string.charAt(i) != '.') { return false; } } return true; }
简单的方法:
public boolean isBlank(String value) { return (value == null || value.equals("") || value.equals("null") || value.trim().equals("")); } public boolean isOnlyNumber(String value) { boolean ret = false; if (!isBlank(value)) { ret = value.matches("^[0-9]+$"); } return ret; }
以下是如何检查input是否包含数字:
if (input.matches(".*\\d.*")) { // there's a digit somewhere in the input string }
要检查所有的诠释字符,你可以简单地使用双重否定。 if(!searchString.matches(“[^ 0-9] + $”))…
[^ 0-9] + $检查是否有任何字符不是整数,所以testing失败,如果是真的。 只是不这样做,你会成功。
您可以使用Character.isDigit(char ch)方法,也可以使用正则expression式。
以下是摘录:
public class CheckDigit { private static Scanner input; public static void main(String[] args) { System.out.print("Enter a String:"); input = new Scanner(System.in); String str = input.nextLine(); if (CheckString(str)) { System.out.println(str + " is numeric"); } else { System.out.println(str +" is not numeric"); } } public static boolean CheckString(String str) { for (char c : str.toCharArray()) { if (!Character.isDigit(c)) return false; } return true; }
}
我最后在我的程序中写了这个小方法,所以我可以检查一个string是数字还是至less每个字符都是数字。
private boolean isNumber(String text){ if(text != null || !text.equals("")) { char[] characters = text.toCharArray(); for (int i = 0; i < text.length(); i++) { if (characters[i] < 48 || characters[i] > 57) return false; } } return true; }