web-dev-qa-db-ja.com

Java整数がnullかどうかはどうすればわかりますか?

ご挨拶、

私の整数がヌルかどうかを検証しようとしています。その場合、ユーザーに値を入力するように要求する必要があります。私の背景はPerlなので、最初の試みは次のようになります。

int startIn = Integer.parseInt (startField.getText());

if (startIn) { 
    JOptionPane.showMessageDialog(null,
         "You must enter a number between 0-16.","Input Error",
         JOptionPane.ERROR_MESSAGE);                
}

Javaはブール論理を想定しているため、これは機能しません。

Perlでは、「exists」を使用して、ハッシュ/配列要素に次のデータが含まれているかどうかを確認できます。

@items = ("one", "two", "three");
#@items = ();

if (exists($items[0])) {
    print "Something in \@items.\n";
}
else {
    print "Nothing in \@items!\n";
}

Javaでこれを行う方法はありますか?ご協力ありがとうございました!

エレミヤ

追伸Perl 存在する 情報。

26
Jeremiah Burley

parseInt()は、解析が正常に完了できない場合に例外をスローするだけです。代わりに、対応するオブジェクトタイプであるIntegersを使用できます。だから、あなたはおそらくもっと近いものが欲しい:

_Integer s = null;

try { 
  s = Integer.valueOf(startField.getText());
}
catch (NumberFormatException e) {
  // ...
}

if (s != null) { ... }
_

注意parseInt()を使用することにした場合parseInt()は適切な国際化をサポートしていないため、さらに多くのフープを介してジャンプする必要があります。

_try {
    NumberFormat nf = NumberFormat.getIntegerInstance(locale);
    nf.setParseIntegerOnly(true);
    nf.setMaximumIntegerDigits(9); // Or whatever you'd like to max out at.

    // Start parsing from the beginning.
    ParsePosition p = new ParsePosition(0);

    int val = format.parse(str, p).intValue();
    if (p.getIndex() != str.length()) {
        // There's some stuff after all the digits are done being processed.
    }

    // Work with the processed value here.
} catch (Java.text.ParseFormatException exc) {
    // Something blew up in the parsing.
}
_
41
John Feminella

これを試して:

Integer startIn = null;

try {
  startIn = Integer.valueOf(startField.getText());
} catch (NumberFormatException e) {
  .
  .
  .
}

if (startIn == null) {
  // Prompt for value...
}
8
John Topley

intsは値型です。 nullになることはありません。代わりに、解析が失敗した場合、parseIntはキャッチする必要があるNumberFormatExceptionをスローします。

3
Thomas

existsはありません スカラー とにかくPerlで。 Perlの方法は

defined( $x ) 

そして同等のJavaは

anInteger != null

これらは同等です。

exists $hash{key}

Javaのようなものです

map.containsKey( "key" )

あなたの例から、私はあなたが探していると思う

if(startIn!= null){...

2
Axeman

私にとっては、Integer.toString()メソッドを使用するだけでうまく機能します。 nullである場合にだけ変換する場合は、変換できます。以下の例:

private void setCarColor(int redIn, int blueIn, int greenIn)
{
//Integer s = null;
if (Integer.toString(redIn) == null || Integer.toString(blueIn) == null ||     Integer.toString(greenIn) == null )
2
SaintClaire33

これが役立つはずです。

Integer startIn = null;

// (optional below but a good practice, to prevent errors.)
boolean dontContinue = false;
try {
  Integer.parseInt (startField.getText());
} catch (NumberFormatException e){
  e.printStackTrace();
}

// in Java = assigns a boolean in if statements oddly.
// Thus double equal must be used. So if startIn is null, display the message
if (startIn == null) {
  JOptionPane.showMessageDialog(null,
       "You must enter a number between 0-16.","Input Error",
       JOptionPane.ERROR_MESSAGE);                            
}

// (again optional)
if (dontContinue == true) {
  //Do-some-error-fix
}
0
John Schneider

コレクションでのみ、Perlの整数で "exists"を使用できるとは思いません。 Javaの例に一致するPerlの意味の例を挙げてください。

ハッシュ要素または配列要素を指定する式を指定すると、対応する値が未定義であっても、ハッシュまたは配列内の指定された要素が初期化されている場合にtrueを返します。

これは、ハッシュまたは配列要素にのみ適用されることを示しています!

0
Peter Lawrey