2013-11-17 3 views
-1
import java.util.Scanner; 

public class Multiples { 

    public static void main(String[] args) 
    { 
    int number; 
    Scanner kb = new Scanner(System.in); 
    System.out.print("insert a number >"); 
    number = kb.nextInt(); 

    if (number >= 0 && number <= 100) 
     if (number % 7 == 0) 
     System.out.println("multiple of 7"); 
     else 
     System.out.println("not a multiple of 7"); 
     if (number % 2 == 0) 
     System.out.println(" multiple of 2"); 
     else 
     System.out.println("not a multiple of 2"); 
    else 
     System.out.println("choose a different number"); 
    } 

} 

Код работает до последнего момента. Все операторы if работают внутри основного IF, в котором принимается тест. Но я получаю синтаксическую ошибку, когда использую последнюю. Может ли кто-нибудь сказать мне, где я ошибся?Не удается получить значение, если тест недействителен

+3

Используйте несколько скобок ... Вы хотите иметь два оператора в верхнем 'if'. –

+0

Из документа: _ «Решение о том, чтобы опустить фигурные скобки - это вопрос личного вкуса. Опуская их, можно сделать код более хрупким. Если второе утверждение позже добавляется к« затем », общая ошибка будет забывать добавьте вновь необходимые фигурные скобки. ** Компилятор не может поймать такую ​​ошибку, вы получите неправильные результаты. ** «_ –

+0

Даже форматирование кода показало бы вам эту ошибку, но это один из примеров того, почему вы всегда должны использовать скобки. – Kevin

ответ

5

Вы хотите добавить скобки в самом верхних if

if (number >= 0 && number <= 100) { 
    if (number % 7 == 0) 
     System.out.println("multiple of 7"); 
    else 
     System.out.println("not a multiple of 7"); 
    if (number % 2 == 0) 
     System.out.println(" multiple of 2"); 
    else 
     System.out.println("not a multiple of 2"); 
} else 
    System.out.println("choose a different number"); 

if блока требует фигурных скобок {} если вы хотите больше, чем один оператор будет выполняться как часть своего тела. В вашем случае у вас есть 2 if-else заявления. Поэтому вам нужны скобки.

В противном случае это эквивалентно

if (number >= 0 && number <= 100) { 
    if (number % 7 == 0) 
     System.out.println("multiple of 7"); 
    else 
     System.out.println("not a multiple of 7"); 
} 
if (number % 2 == 0) 
    System.out.println(" multiple of 2"); 
else 
    System.out.println("not a multiple of 2"); 

else 
    System.out.println("choose a different number"); 

И последняя else не имеет соответствующего if, что синтаксически неправильно в Java.

Мы все рекомендуем всегда использовать скобки независимо от количества операторов, которые вы хотите выполнить в своих блоках if-else.

+0

Лучше использовать скобки для всех 'if's. – Kevin

Смежные вопросы