2013-12-09 3 views
0

Я не могу понять, почему это не складывается правильно каждый раз, когда он петли. Там же проблема с петли, пока не выводит сумму, когда -9999 набирается.Java В то время как цикл не правильно добавлен

import java.util.*; 
public class list 
{ 
    public static void main(String args []) 
    { 
     Scanner sc = new Scanner(System.in); 
     int Number, Sum = 0; 
     System.out.println("Enter the list of whole numbers, terminate by -9999> "); 
     Number = sc.nextInt(); 
     Sum += Number; 
     while (Number != -9999) 
     { 
     if (Number > 1 && Number < 100) 
     { 
      Sum += Number; 
      Number = sc.nextInt(); 
     } 
     else 
      System.out.println("Please enter a number between 1 and 100"); 
     Number = sc.nextInt(); 
     } 
     System.out.println("Sum is " + Sum); 
    } 
} 
+0

Попробуйте использовать отладчик. –

+4

Кроме того, попросите вашу среду IDE переформатировать ваш код, что сделает ошибку более очевидной. –

+1

Также измените 'if (Number> 1 && Number <100)' to 'if (Number> = 1 && Number <= 100)' –

ответ

5

Вы просите ряд потенциально дважды в цикле. Один раз в блоке if и один раз после ваш else блок. Без круглых скобок только первый оператор является блоком. Вместо

else 
    System.out.println("Please enter a number between 1 and 100"); 
    Number = sc.nextInt(); 

Попробуйте

else 
{ 
    System.out.println("Please enter a number between 1 and 100"); 
    Number = sc.nextInt(); 
} 

Кроме того, ваш первый номер добавляется в два раза; удалите первое добавление до цикла while.

Кроме того, в то время как это законно, и это, возможно, ваши фактические потребности, эта линия

if (Number > 1 && Number < 100) 

не будет принимать 1 или 100. Возможно, ваши требования включают в себя принятие как 1, так и 100, и в этом случае условие должно быть Number >= 1 && Number <= 100.

Кстати, обычно Java переменные начинаются с строчной буквы, в то время как занятия начинаются с заглавной буквы, а это означает, что переменные Number и Sum должны быть переименованы number и sum, соответственно.

+0

Почему вы просто не удаляете 'sc.nextInt();' в инструкции else ? – Sionnach733

+1

Лучше взять 'Number = sc.nextInt();' вне блока 'if-else'. –

0

1 Fixed Когда вы планируете сделать условный цикл лучше использовать do while()

2 Был бесполезная sc.nextInt() внутри if (Number >= 1 && Number <= 100), который смешивал все ваши расчеты

3 между 1 и 100 я полагаю Number >= 1 && Number <= 100, что вам нужно, если вы не хотите, чтобы приложение, чтобы принять 1 и 100

Scanner sc = new Scanner(System.in); 
      int Number, Sum = 0; 
      System.out.println("Enter the list of whole numbers, terminate by -9999> "); 
      Number = sc.nextInt(); 

      do { 
       if (Number >= 1 && Number <= 100) 
       { 
       Sum += Number; 
       } 
      else 
       System.out.println("Please enter a number between 1 and 100"); 

       Number = sc.nextInt(); 
      } while (Number != -9999); 
      System.out.println("Sum is " + Sum); 
      } 

Good Luck

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

  • Нет связанных вопросов^_^