2014-01-06 3 views
1

Я получаю NullPointerException, когда я нажимаю CANCEL Option в своем Swing.Состояние с возможностью поворота

Код:

while(!input.equals(CANCEL_OPTION)); 

И я получаю сообщение, что он говорит, несовместимые типы ....

А вот мой полный код ..

do 
    { 
    input=JOptionPane.showInputDialog("Enter a String."); 


    for(int i =input.length()-1;i>=0;i--) 
    {   
     result = result + (input.charAt(i)); 
     disp.append("\n").append(result); 
    }  

    JOptionPane.showMessageDialog(null,input+"\n"+disp+"\n"+"\n"+result); 
    input=""; 
    disp.setLength(0); 
    result=""; 
    } 
    while(!input.equals(CANCEL_OPTION)); 

А код ошибки или что-то ..

Exception in thread "main" java.lang.NullPointerException 
at Reverse.main(Reverse.java:15) 
Java Result: 1 

ответ

0

просто использовать заявление поймать попробовать ..

try 
    { 
    do 
    { 
     //your codesss...... 
    } 
    while(!input.equals(null)); 
    } 
    catch(Exception ex) 
    { 
    ////code.. 
    } 

надеюсь, что это поможет.

+0

Но если 'input' является' null', то при вызове метода 'equals' на нем будет выведено' NullPointerException', и если он НЕ 'null', результат всегда будет false. Так в чем же преимущество такого состояния? –

5

Как Javadoc из JOptionPane.showInputDialog() состояний

входных

возвращает пользователя, или нулевой смысловых пользователь отменил вход

, если вы хотите, чтобы пользователь мог ввести что-то.

do { 
    input = JOptionPane.showInputDialog("Enter a String."); 
} while (input == null); // user can't cancel 

for (int i = input.length() - 1; i >= 0; i--) { 
    result = result + (input.charAt(i)); 
    disp.append("\n").append(result); 
} 

.... 
+0

+1 но не требуется какой-либо петли, простой Если - если else - else – mKorbel

0

переставить do while для простого while. Разница в том, что do while будет работать один раз, прежде чем он достигнет условия тестирования. Ваш код получает значение CANCEL_OPTION, которое составляет null, пытаясь использовать его, , а затем тестирование, если оно null. Вам нужно перенести тест на старт.

Пример

input=JOptionPane.showInputDialog("Enter a String."); 

while(input != null) { 
    // Your code here. 
} 

Примечание: Это даст пользователю возможность отменить, если они пожелают. Если они это сделают, он пропустит обработку ввода пользователя.

+0

Если 'input' является' null' .. – christopher

+0

Ненавижу утра. Благодарю за то, что ты острее меня! – christopher

+0

Это хорошо .. 'input == null' возвращает логическое значение. – christopher

0

Когда вы нажимаете кнопку отмены, JOptionPane ничего не возвращает, поэтому ваш вход равен нулю. и код, который вы уже введете, должен войти в совок, и когда ваш код достигнет линии:

for(int i =input.length()-1;i>=0;i--) 

вход уже null.

я предпочитаю, чтобы добавить после того, что выравнивают follwing:

if(input == null) { 
      break; 
     } 
Смежные вопросы