2013-10-08 2 views
3

В следующем коде && в выражении if else дает синтаксическую ошибку, и я не уверен, как ее решить. Может ли кто-нибудь предложить решение?Проблема с оператором &&

//Importing scanner 
import java.util.Scanner; 

public class Credithistory { 

    public static void main(String[] args) {    
     //Stating scanner gets its input from console 
     Scanner scanner= new Scanner (System.in);   
     //declaring int and boolean   
     int age; 
     boolean goodCreditHistory;   
     System.out.println("Please enter your age... "); 
     age= scanner.nextInt();   
     System.out.println("Do you have a good credit history (true or flase)?"); 
     goodCreditHistory= scanner.nextBoolean();   
     if (age>=18) && (goodCreditHistory== true){ // <-------------- Error 
      System.out.println("You have got a credit card!");    
     } else 
      System.out.println ("Sorry you are not eligible for a credit card."); 
    }  
} 
+4

Это избыточное писать '== true' в' if' заявления. Возможная проблема, которая может произойти, заключается в назначении по ошибке вместо сравнения. Так что просто напишите 'if (something)' вместо 'if (something == true)'. – Maroun

+1

Ответы, которые не имеют круглых скобок вокруг первого условия, то есть (age> = 18), используют преимущество приоритета оператора. Взгляните на http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html. > = Имеет более высокий приоритет, чем &&, поэтому он будет оцениваться первым, даже без круглых скобок. – rajah9

ответ

6

Правильный синтаксис

if (age>=18 && goodCreditHistory){ 

} 

Удалите ненужные скобки. А также вам не нужно писать

goodCreditHistory== true 

, так как это уже boolean.

1

Поместите оба утверждения в одном наборе скобок:

if (age>=18 && goodCreditHistory== true) { 
    System.out.println("You have got a credit card!"); 
} 
14

Это происходит потому, что, как вы поставите скобки. if заявления состоит из двух круглых скобок уже, так что вы должны написать ваше заявление как

if ((age>=18) && (goodCreditHistory == true)) 

вместо

if (age>=18) && (goodCreditHistory == true) 

, так как вторая часть вашего заявления (&& (goodCreditHistory == true)) в настоящее время анализируются, как если бы была частью корпуса if.

Вы можете написать это заявление в более краткой форме, как

if(age >= 18 && goodCreditHistory) 

дополнительные скобки не нужны. == true заявление также является излишним.

+4

Обратите внимание, что здесь используются резервные круглые скобки. –

+0

@AdamArold Да, они действительно не нужны. Операция '== true' также является избыточной. Я просто скопировал код OP. – Mauren

+1

Хорошо, +1 после вашего редактирования. –

2

В Java вся условие для if заявления должна содержаться в скобках, поэтому оно должно быть:

if ((age>=18) && (goodCreditHistory== true)) { 
Смежные вопросы