2013-10-09 3 views
0

пытается завершить программу, используя отрицательные числа, и если инструкция else. кто-нибудь видит, что не так с этой благодарностью.Завершение работы программы, используя инструкцию if else?

import java.util.Scanner; 

public class Assignment { 
    public static void main(String args[]){ 
    int n; 
    int i=0; 

    System.out.print("Enter a Number:"); 
    Scanner scanner = new Scanner(System.in); 
    n= scanner.nextInt(); 
    int backUp = n; 
    if(n>0) 

     n=n/10; 
     i++; 

     else if(backUp = -1) 

     System.out.print("program terminated......"); 
      System.exit(0); 



    System.out.println("Number of Digits in " +backUp +" is " +i); 

    } 
} 
+3

Вы должны использовать скобки вокруг блоков if и else '{' и '}' – Matthias

+0

. Интересно, почему вы не используете IDE, потому что кажется, что ваш код не удалось даже скомпилировать. Я вижу, что вы спросили, что с ним не так ... компилятор ответит :), и тогда мы могли бы обсудить логику. –

ответ

6

Прежде всего, = предназначен для назначения значений. Используйте == для сравнения.

Кроме того, вы должны использовать {} после if и else операторов, если вы хотите запустить более одной строки.

+0

@ javaBeginner Это так. Если вы посмотрите на часть 'if (n> 0)', то только следующая строка будет зависеть от оператора 'if', следующая строка (' i ++ ') будет * всегда * выполнять, затем' else if' приведет к синтаксической ошибке, потому что это не сразу после оператора if. –

+0

Без {} у else нет значения. И я думаю, что 'System.exit (0)' следует вызывать при выходе. (-1) – BobTheBuilder

+0

Я хочу сказать, что когда пользователь вводит любое значение, большее 0, оно прекращается – SpringLearner

4
else if(backUp = -1) 

Должно быть

else if(backUp == -1) 

= оператор присваивания, == для сравнения

И, наконец, пропустили {}

if (n > 0) { 
      n = n/10; 
      i++; 
    } else if (backUp == -1) { 
      System.out.print("program terminated......"); 
      System.exit(0); 
    }else{ 
      // do something else. I have no idea. 
     } 
2

У вас не хватает { } для ваших if -statements. В операциях if без { } на результат строки if-test влияет только строка, следующая за оператором if.

Итак:

if (condition) 
    doSomething(); 
    doSomethingElse(); 

выполнит doSomething() если condition == true и doSomethingElse() независимо от того, если condition == true.

if (condition) { 
    doSomething(); 
    doSomethingElse(); 
} 

будет выполняться как doSomething() и doSomethingElse(), если и только если условие == верно.

1

Вы используете оператор присваивания для оценки состояния.

else if(backUp = -1) 

должен быть

else if(backup == -1) 
1

удалить else использование if(backup==-1).

+1

Существует различие между' if' и 'if else '. –

+2

Да, я знаю ... но проверьте его программу, он не используется надлежащим синтаксисом .. –

+1

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

1

Прежде всего вашего отступов.

Во-вторых, если вы хотите выполнить несколько операторов с заданным условием, вам нужно будет поместить его в блок кода, например if(x) { /* do multiple things */ }.

В-третьих, ваш else if(backUp = -1) недействителен, так как вам нужно логическое выражение внутри a, если backUp = -1 является назначением и, следовательно, не оценивает значение boolean (вы, вероятно, хотите backUp == -1).

И вы, вероятно, захотите зациклить часть n = n/10; i++;, потому что теперь она никогда не будет считаться более 1 цифры.

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