0

「0」ではなく、最初にnullを整数変数に設定するにはどうすればよいですか。デフォルトでは、すべての int 値が「0」であることはすでにわかっています。メソッドなどを使用String.valueOf()しました。「null」として印刷したくありません。「 」のように白紙で印刷したい。数値形式の例外が発生します。そのための解決策を1つ教えてください。

前もって感謝します

ここにコードがあります

public class IntegerDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String id="";


        System.out.println(""+Integer.parseInt(id));

    }
}
4

8 に答える 8

4

問題を複雑にしすぎていると思いますが、それは本当に簡単なことです。以下のコードを確認してください。

Integer i = null;
System.out.println(i == null ?"":i);
于 2013-08-31T05:08:29.943 に答える
0

java.lang.Integerクラスに固執する必要があります。

String id = ""
Integer test = null;

if (!"".equals(id))
{
   test = Integer.parseInt(id);
}
于 2013-08-31T04:56:53.023 に答える
0

のインスタンスをIntegerプライマリ値として作成するnullことは無意味ですが、宣言でこれを行うことができます。

Integer id = null;

あなたが得ている理由はドキュメントに記載NumberFormatExceptionされています:

次のいずれかの状況が発生した場合、NumberFormatException タイプの例外がスローされます。

  • 最初の引数が null であるか、長さが 0 の文字列です。

  • 基数が Character.MIN_RADIX よりも小さいか、Character.MAX_RADIX よりも大きいです。

  • 文字列のどの文字も、指定された基数の数字ではありません。ただし、最初の > 文字はマイナス記号 '-' ('\u002D') またはプラス記号 '+' ('\u002B') である場合があります。長さ 1 より長いです。

  • 文字列で表される値は int 型の値ではありません。

その制限により、Integer.parseInt("")またはを呼び出すことはできません。Integer.parseInt(null)

于 2013-08-31T04:57:02.137 に答える
-1

単純なボックス化された IntegerInteger i = null;は既に提供されています。代替案は次のとおりです。

class NullableInt {
    private int value;
    private boolean isNull;
    public NullableInt() { isNull = true; }
    public NullableInt(int value) { 
      this.value = value; 
      isNull = false;
    }
    public NullableInt(String intRep) {
      try { value = Integer.parseInt(intRep);
      } catch (NumberFormatException) {
         isNull = true;
      }
    }
    boolean isNull() { return isNull; }
    void setNull(boolean toNull) { isNull = toNull; }
    void setValue(int value) { this.value = value; }
    int getValue() { return value; }
    @Override 
    public String toString() { return isNull ? "" : value; }
}

NullableInt integer1 = new NullableInt(56);
NullableInt integer2 = new NullableInt();

System.out.pritnln(integer1); // >> "56"
System.out.println(integer2); // >> ""

// and finally, to address the actual question:
String id = "";
System.out.println(new NullableInt(id)); // >> ""
于 2013-08-31T04:58:13.303 に答える