У меня есть программа gpa, и она работает с методом equalsIgnoreCase()
, который сравнивает две строки - букву "a" с пользовательским вводом, которая проверяет, помещают ли они "a" или нет. Но теперь я хочу добавить исключение с сообщением об ошибке, которое выполняется, когда число является входом. Я хочу, чтобы программа понимала, что целочисленный ввод не совпадает с строкой и дает сообщение об ошибке. Какие методы я могу использовать для сравнения переменной типа String для ввода типа int и исключения исключения?
Как проверить, является ли строка числовой?
Ответ 1
Много вариантов рассмотрены на 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, похоже, тоже есть помощники.
Ответ 2
Если вам разрешено использовать сторонние библиотеки, предложите следующее.
NumberUtils.isDigits(str:String):boolean
NumberUtils.isNumber(str:String):boolean
Ответ 3
Используйте метод ниже,
public static boolean isNumeric(String str)
{
try
{
double d = Double.parseDouble(str);
}
catch(NumberFormatException nfe)
{
return false;
}
return true;
}
Если вы хотите использовать регулярное выражение, вы можете использовать, как показано ниже,
public static boolean isNumeric(String str)
{
return str.matches("-?\\d+(\\.\\d+)?"); //match a number with optional '-' and decimal.
}
Ответ 4
Вы также можете использовать ApacheCommons StringUtils.isNumeric - http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#isNumeric(java.lang.String)
Ответ 5
Используйте этот
public static boolean isNum(String strNum) {
boolean ret = true;
try {
Double.parseDouble(strNum);
}catch (NumberFormatException e) {
ret = false;
}
return ret;
}
Ответ 6
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;
}
Ответ 7
Простой метод:
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;
}
Ответ 8
Здесь, как проверить, содержит ли вход цифру:
if (input.matches(".*\\d.*")) {
// there a digit somewhere in the input string
}
Ответ 9
Чтобы проверить все символы int, вы можете просто использовать двойной отрицательный. if (! searchString.matches( "[^ 0-9] + $" ))...
[^ 0-9] + $проверяет, есть ли какие-либо символы, которые не являются целыми, поэтому тест терпит неудачу, если он истинен. Просто НЕ, и вы вернетесь к успеху.
Ответ 10
Вы можете использовать метод Character.isDigit(char ch), или вы также можете использовать регулярное выражение.
Ниже приведен фрагмент:
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;
}
}
Ответ 11
Я написал этот маленький метод в моей программе, поэтому я могу проверить, является ли строка числовой или, по крайней мере, каждый char является числом.
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;
}