Come verificare se una stringa è numerica?

Ho un programma gpa, e funziona con il equalsIgnoreCase() che mette a confronto due stringhe, la lettera “a” per l’input dell’utente, che controlla se mettono “a” o meno. Ma ora voglio aggiungere un’eccezione con un messaggio di errore che viene eseguito quando un numero è l’input. Voglio che il programma capisca che l’intero non è uguale alla stringa e fornisce un messaggio di errore. Quali metodi posso utilizzare per confrontare un tipo di variabile String con l’input di tipo int e generare un’eccezione?

Molte opzioni sono state esplorate su http://www.coderanch.com/t/405258/java/java/String-IsNumeric

Un altro è

 public boolean isNumeric(String s) { return s != null && s.matches("[-+]?\\d*\\.?\\d+"); } 

Potrebbe essere eccessivo, ma Apache Commons NumberUtils sembra avere anche alcuni aiutanti.

Se si è autorizzati a utilizzare librerie di terze parti, suggerire quanto segue.

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 

Usa questo

 public static boolean isNum(String strNum) { boolean ret = true; try { Double.parseDouble(strNum); }catch (NumberFormatException e) { ret = false; } return ret; } 

Usa il metodo seguente,

 public static boolean isNumeric(String str) { try { double d = Double.parseDouble(str); } catch(NumberFormatException nfe) { return false; } return true; } 

Se vuoi usare espressioni regolari puoi usare come sotto,

 public static boolean isNumeric(String str) { return str.matches("-?\\d+(\\.\\d+)?"); //match a number with optional '-' and decimal. } 

Metodo semplice:

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

Infine ho scritto questo piccolo metodo nel mio programma in modo da poter verificare se una stringa è numerica o almeno ogni singolo carattere è un numero.

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

Ecco come verificare se l’input contiene una cifra:

 if (input.matches(".*\\d.*")) { // there's a digit somewhere in the input string } 

Per verificare tutti i caratteri int, è sufficiente utilizzare un doppio negativo. if (! searchString.matches (“[^ 0-9] + $”)) …

[^ 0-9] + $ controlla se ci sono caratteri che non sono interi, quindi il test fallisce se è vero. Semplicemente no e si ottiene il vero successo.

Puoi usare il metodo Character.isDigit (char ch) o puoi anche usare espressioni regolari.

Di seguito è riportato lo snippet:

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

}