2016-03-09 93 views
0

我已经被分配了一个任务来创建一个平均计算器,不幸的是,每次平均完成时,我得到的任何一个太多,当我做数字时没有解决问题 - 或者,平均完全关闭。平均计算器[舍入问题]

import java.util.*; 

public class Mean 
{ 
    public static void main() 
    { 
     Scanner inputLine = new Scanner(System.in); 
     int total = 0, number, counter = 0; 
     double average; 

     System.out.println ("Enter your numbers, press 0 to launch"); 


     while (inputLine.nextInt() != 0) 
     { 
      number = inputLine.nextInt(); 
      if(number >= 1) 
      { 
       total = total + number; 
       counter++; 
      } 
     } 


     average = total/counter-1; 
     System.out.println ("Your Average is : " + average); 

    } 
} 
+0

您正在执行整数运算(其导致的整数)分频,然后您将该整数扩大到“double”。通过在double上做数学来修复它。例如,'average =((double)total)/ counter;' –

+0

刚刚试过,1,2,3,4,5,6,7,8,9,10,0 = 6仍然很奇怪。 –

回答

4
  1. 您正在阅读从Scannerint每两次循环。 while循环读取一个int以确保它不是0,但循环的主体读取第二个int并且只计算第二个int

将第一个nextInt调用的结果分配给while循环条件中的变量,并在主体中使用该变量进行计算。

  1. 您正在从平均计算中减去1。这没有理由。不要这样做。

  2. 您正在执行Java的整数除法,它将截断任何小数。将其中一个操作数转换为/double以强制执行浮点计算。

while ((number = inputLine.nextInt()) != 0) 
{ 
    if(number >= 1) 
    { 
     total = total + number; 
     counter++; 
    } 
} 
average = (double) total/counter; 

您可能需要添加代码,其中用户输入的任何项目的状态下,以防止0