2013-11-14 45 views
1

没有人知道如何计算循环中的平均值。每次我计算平均收到0或1.我知道我需要使用average =(sum)/(salary_annually);但我无法让它工作。提前致谢。计算嵌套循环中的平均数Java

import java.util.Scanner; 

public class midterm 
{ 
public static void main(String args[]) 
{ 
    Scanner kb = new Scanner(System.in); 

    int max = Integer.MIN_VALUE; 
    int min = Integer.MAX_VALUE; 
    int sum = 0; 
    int average=0; 
    int count = 0; 
    int salary_annually = 0; 

    for(int employee =1; employee <= 2; employee++) 
    { 
    System.out.println("Employee: " + employee); 

     for(int year=1; year <= 2; year++) 
     { 

      System.out.println("Please Enter the Salary for Year: " + year); 
       salary_annually = kb.nextInt(); 

          sum += salary_annually ; 
       if (min >= salary_annually) 
       { 
        min = salary_annually; 
       } 
      if (max <=salary_annually) 
      { 
       max = salary_annually; 
       } 

      average = (sum)/(salary_annually); 


     } 

      System.out.println("The average is " + average); 
     System.out.println("The higher number " + max); 
     System.out.println("The the lowest number " + min); 
    } 

    } 
    } 
+2

AFAIK平均值由总和/计数来计算。 – Pietu1998

+1

在计算之前,'int'值应该是'double'(或者提升为'double')。 –

+0

平均值应计算在循环内部 - 'average =(sum)/ 2;' – Akshay

回答

1

我猜这里的问题是,你正在使用整数除法。由于总额和薪金每年都是整数划分工作略有不同。没有余数,因为除以两个整数给出一个整数。

例如,1/2不是.5,正如您所期望的那样,但是它是0.在进行整数运算时,将删除任何小数。另外一个例子9/5不是1.8而是1.

如果你想得到平均值,那么你可以将sum或salary_annually声明为double,并将平均值声明为double。

0

变化

average = (sum)/(salary_annually); 

double average=0;// Declare it as `double` rather than `int` 

average = (sum)/2.0; 
0
  1. 平均的计算方法是:average = sum/count;
  2. 你需要增加你的count变量,否则你总是会得到和ArithmeticException/by zero
0

平均值由average = sum/count计算,其中平均应该是double类型的。

您确实声明了变量计数,但未使用它。

import java.util.Scanner; 

public class Calulate { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    Scanner kb = new Scanner(System.in); 

    int max = Integer.MIN_VALUE; 
    int min = Integer.MAX_VALUE; 
    int sum = 0; 
    double average = 0; 
    int count = 2; 
    int salary_annually = 0; 

    for (int employee = 1; employee <= 2; employee++) { 
     System.out.println("Employee: " + employee); 

     for (int year = 1; year <= count; year++) { 

      System.out.println("Please Enter the Salary for Year: " + year); 
      salary_annually = kb.nextInt(); 
      sum += salary_annually; 

      if (min >= salary_annually) { 
       min = salary_annually; 
      } 
      if (max <= salary_annually) { 
       max = salary_annually; 
      } 

     } 

     average = sum/count; 

     System.out.println("The average is " + average); 
     System.out.println("The higher number " + max); 
     System.out.println("The the lowest number " + min); 
    } 

} 

}