2013-04-06 6 views
0

Я новичок в java.And поэтому я занимаюсь некоторыми вопросами. Но я наткнулся на это. Я знаю, что я очень близко к правильному ответу, и я думаю о том, чтобы поставить другое условие, если оно меньше чем 0.it сломается. Пробовал вставлять это здесь и там, но он не может работать.печатать средние числа

Напишите метод с именем printAverage, который принимает сканер для консоли в качестве параметра и неоднократно запрашивает у пользователя цифры. После ввода любого числа, меньшего нуля, отображается среднее значение всех неотрицательных чисел, набранных. Покажите среднее значение как двойное, а не округлите его. Например, вызов ваш метод может выглядеть следующим образом:

Scanner console = new Scanner(System.in); 
printAverage(console); 
The following is one example log of execution for your method: 

Type a number: 7 
Type a number: 4 
Type a number: 16 
Type a number: -4 
Average was 9.0 
If the first number typed is negative, do not print an average. 

Моя попытка:

public static void printAverage(Scanner console){ 

    int num=0; 
    double sum=0; 
    double avg=0; 
    int counter=0; 
    while(num>=0){ 
    System.out.print("Type a number: "); 
    num=console.nextInt(); 

     if(num>0){ 
    sum+=num; 
    counter++; 
    avg=sum/counter; 
     } 


    } 
    System.out.println("Average was " + avg); 


} 

Sorry.The вопрос не был clear.For пример, когда я типа в 0 0 1 1 - 2 как numbers.I я должен получить

Тип номер: 0 Введите число: 0 Введите номер: 1 Введите номер: 1 Введите номер: -2 Среднее был 0,5

Но я получаю

Тип номер: 0 Введите число: 0 Введите номер: 1 Введите номер: 1 Введите номер: -2 Среднее был 1,0

+4

В чем вопрос? – NPE

+0

Пробовал вводить отрицательный номер. Но он просто не останавливается и прерывает цикл – user2179615

ответ

0

Попробуйте это:

do { 
    System.out.print("Type a number: "); 
    num=console.nextInt(); 
    if (num >= 0) { 
     sum+=num; 
     counter++; 
    } 
} while (num >= 0); 
if (counter > 0) { 
    avg = sum/counter; 
    System.out.println("Average was " + avg); 
} 
+0

Как вы узнаете, как использовать сначала цикл while? Я всегда смущаюсь, какой из них использовать – user2179615

+0

основное различие между 'while' и' do while' заключается в том, что 'do while' будет выполнен хотя бы один раз. – niculare

0

я имею в виду положить состояние еще, что если он меньше, чем 0.it сломается. Пробовал вставлять это здесь и там, но он не может работать.

Если поставить else или нет, не имеет значения, как while(), заботится о разрыве из расчета

, а также из-за else часть приходит последний оператор в цикле

0

Для подавить печать, если первое число было отрицательным, просто добавьте if вокруг System.out.println():

if (counter > 0) { 
    System.out.println("Average was " + avg); 
} 

Также есть ошибка в существующих if, которая должна быть

  if(num>=0){ 
+0

Почему вы используете счетчик здесь? Из моего понимания, не должно быть num? – user2179615

+0

Протестировано. Не работает 0 0 1 1 -2 – user2179615

+0

@ user2179615: Вы игнорируете нули. Измените 'if (num> 0)' на 'if (num> = 0)'. – NPE

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