27

ご挨拶、

整数が 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でこれを行う方法はありますか? ご協力ありがとうございました!

エレミヤ

PS Perlの存在情報。

4

7 に答える 7

41

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.
}
于 2009-03-14T14:52:32.940 に答える
8

これを試して:

Integer startIn = null;

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

if (startIn == null) {
  // Prompt for value...
}
于 2009-03-14T14:58:06.950 に答える
3

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

于 2009-03-14T14:53:31.173 に答える
2

とにかく、PerlにexistsSCALARはありません。Perlの方法は

defined( $x ) 

同等のJavaは

anInteger != null

それらは同等です。

exists $hash{key}

Javaのようなものです

map.containsKey( "key" )

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

if(startIn!= null){..。

于 2009-03-14T19:02:44.150 に答える
2

私にとっては、 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 )
于 2012-03-15T19:34:57.550 に答える
0

これは役立つはずです。

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
}
于 2012-07-12T22:48:23.863 に答える
0

Perlの整数に「存在する」を使用することはできず、コレクションにのみ使用できると思います。Javaでの例と一致するPerlでの意味の例を挙げてください。

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

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

于 2009-03-14T15:36:11.057 に答える