如何检查一个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议如下。

https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/math/NumberUtils.html

 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. } 

用这个

 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; }