2012-06-18 2 views
1

Я пытаюсь выполнить некоторую Java-кодировку с помощью NETBEANS 7.1.2, но это дает мне ошибку «еще» без «if», », когда я пытаюсь построить этот код:«Else If» дает ошибку «else» без «if» в Java

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 
    String search1; 
    search1 = jTextField1.getText(); 

    // stone 
    if (search1=="Stone" || search1=="Rock" || search1=="stone" || search1=="rock" || search1=="1"); 
    { 
     jTextField2.setText("Stone: 1"); 

    } 

    // grass 
    else if (search1=="Grass" || search1=="grass"); 
    { 
     jTextField2.setText("Grass: 2"); 
    } 



} 

Проблема возникает у« else if »под // травой. Я делаю что-то неправильно?

ответ

2

У вас есть «;» после первого условия.

Компилятор предполагает, что это конец инструкции if, поэтому компилятор показывает ошибку в строке «else if». Удалить «;» и все должно быть хорошо!

+0

Спасибо! Это исправило это. Еще один пример потрясающего и полезного сообщества stackoverflow! – Rocmalone

10

В этой строке:

if (search1=="Stone" || search1=="Rock" || search1=="stone" || search1=="rock" || search1=="1"); 

И эта линия:

else if (search1=="Grass" || search1=="grass"); 

Вы должны удалить ; в конце. Эти точки с запятой неуместны, компилятор интерпретирует первый оператор if как if без тела, код между {} как область блока и оператор else if как else без if.

Кроме того, следует помнить, что все сравнения строк ошибаетесь, в Java вы должны использования equals() для сравнения двух строк для равенства, не ==, который сравнивает для идентичности.

0

У меня была такая же проблема, как у вас. Я нашел это как решение, и он отлично работал для меня. Я думаю, это то, что вам нужно.

String unit=jTextField1.getText(); 
      if(unit.equals("kg") || unit.equals("gm")){ 
    // some code 
      } 
else if(unit.equals("dzn")||unit.equals("qty")){ 
    // some code 
     }