44

私はgpaプログラムを持っています.2equalsIgnoreCase()つの文字列「a」をユーザー入力と比較し、「a」を入れたかどうかをチェックする方法で動作します。しかし、ここでは、数値が入力されたときに実行されるエラー メッセージを含む例外を追加したいと考えています。整数入力が文字列と同じではないことをプログラムに認識させ、エラーメッセージを表示させたい。String型変数をint型の入力と比較して例外をスローするには、どのメソッドを使用できますか?

4

11 に答える 11

67

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にもいくつかのヘルパーがあるようです。

于 2013-01-08T01:10:48.443 に答える
34

サードパーティのライブラリの使用が許可されている場合は、次のことを提案してください。

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
于 2013-01-08T01:30:10.427 に答える
7

これを使って

public static boolean isNum(String strNum) {
    boolean ret = true;
    try {

        Double.parseDouble(strNum);

    }catch (NumberFormatException e) {
        ret = false;
    }
    return ret;
}
于 2013-01-08T02:28:23.387 に答える
6

ApacheCommons StringUtils.isNumeric を使用することもできます - http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#isNumeric(java.lang.String )

于 2013-09-05T09:45:18.347 に答える
5

以下の方法を使用して、

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.
}
于 2013-01-08T01:08:36.440 に答える
3
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;
}
于 2013-05-29T11:22:44.220 に答える
1

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

}

于 2016-02-28T23:40:38.137 に答える
0

入力に数字が含まれているかどうかを確認する方法は次のとおりです

if (input.matches(".*\\d.*")) {
    // there's a digit somewhere in the input string 
}
于 2013-01-08T01:24:52.187 に答える