2015-10-01 24 views
0

嗨,我需要帮助完成这项任务。当我运行我所拥有的只是永远循环,帮助将非常感激。这是我的任务是: 在下一页写一个程序段,从键盘读取一个整数序列,直到输入0(零)。输入时输出每个整数(除了停止程序的0)和输入整数的平均值。整数在最后返回平均值的序列

  1. 每个非零整数打印在一个单独的行上。
  2. 这个过程一直持续到零被读取为止,此时段停止。

这是我到目前为止有:

import java.util.Scanner; 

public class List { 
    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 
     int boom = 0; 
     int sum = 0; 
     double average = 0; 
     int count = 0; 
     System.out.println("Enter a nonzero integer, please!"); 
     boom = keyboard.nextInt(); 
     while (boom != 0) { 
      sum += boom; 
      count++; 
      average = ((double) sum)/count; 
      System.out.println("The average is " + average); 
     } 
    } 
} 
+1

你需要正确缩进,以便你(和我们)可以理解你的代码。你的'keyboard.nextInt()'行需要在循环内部,然后你需要修正循环逻辑。 –

回答

0

您只读取一次键盘输入。这就是你应该做的:

while (boom=keyboard.nextInt() != 0) { 
    sum += boom; 
    count++;    
    average = ((double)sum)/count; 
    System.out.println ("The average is " + average);  
} 
0

它将永远循环下去,如果你输入的boom=keyboard.nextInt()阶段非零整数。之所以会出现这种情况,在你的时间段内,繁荣不会改变,停止的条件是繁荣不等于零。

您需要在环路外将boom设置为非零值,并将您的任务从loop中的键盘移动到int的boom。