Подтвердить что ты не робот

Как определить, является ли целое число Java нулевым?

Привет,

Я пытаюсь проверить, является ли мое целое число равным нулю. Если это так, мне нужно предложить пользователю ввести значение. Мой фон - 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", чтобы проверить, содержат ли элементы hash/array следующие данные:

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

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

Есть ли способ для этого в Java? Спасибо за помощь!

Иеремия

P.S. Perl exists info.

4b9b3361

Ответ 1

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

Ответ 2

Попробуйте следующее:

Integer startIn = null;

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

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

Ответ 3

int - типы значений; они никогда не могут быть null. Вместо этого, если синтаксический анализ не удался, parseInt выкинет NumberFormatException, который вам нужно поймать.

Ответ 4

В Perl нет exists для SCALAR в Perl. Способ Perl -

defined( $x ) 

а эквивалентная Java -

anInteger != null

Это эквиваленты.

exists $hash{key}

Как Java

map.containsKey( "key" )

В вашем примере, я думаю, вы ищете

if (startIn!= null) {...

Ответ 5

Для меня просто использование метода Integer.toString() работает для меня просто отлично. Вы можете преобразовать его, если хотите просто, если он равен нулю. Пример ниже:

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 )

Ответ 6

Я не думаю, что вы можете использовать "существует" для целого числа в Perl, только для коллекций. Можете ли вы привести пример того, что вы имеете в виду в Perl, который соответствует вашему примеру в Java.

Учитывая выражение, которое указывает элемент хэша или элемент массива, возвращает true, если указанный элемент в хеше или массиве когда-либо был инициализирован, даже если соответствующее значение undefined.

Это означает, что он применяется только к элементам хэша или массива!

Ответ 7

Это должно помочь.

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
}