【问题标题】:data type and calculate average in javajava中的数据类型和计算平均值
【发布时间】:2021-11-18 19:50:44
【问题描述】:

我正在编写一个 java 代码,它计算 N 个学生的数组中的平均成绩,当我输入像 {3,4,3} 这样的成绩时它工作正常,但是当我使用像 {3.7 这样的带小数的数字时,2.5,3.2} 它开始给我错误,例如我想创建一个数据类型 Student 的类。

import java.util.*;
public class ArrayAverageProblem { 
   public static void main(String[] args) { 
      System.out.println("Enetr number of students : "); 
      Scanner adnan = new Scanner(System.in); 
      int length = adnan.nextInt(); 
      int[] input = new int[length]; 
      System.out.println("Enter cgpa of students : "); 
      for (int i = 0; i < length; i++) { 
         input[i] = adnan.nextInt(); 
      } 
      double averageCgpa = averageCgpa(input); 
      System.out.println("Average of students cgpa :  " + averageCgpa); 
      adnan.close(); 
   }   
   public static double averageCgpa(int[] input) { 
      double sum = 0f; 
      for (int number : input) { 
         sum = sum + number; 
      } 
      return sum / input.length; 
   } 
}

任何帮助将不胜感激。

【问题讨论】:

    标签: java arrays class types


    【解决方案1】:

    我改进了您的代码以使用双数。 请注意,您的成绩必须是 double 并使用 nextDouble() 方法从扫描仪获取成绩。 这段代码在下面

    public static void main(String[] args) {
    
        System.out.println("Enetr number of students : ");
    
        Scanner adnan = new Scanner(System.in);
    
        int length = adnan.nextInt();
    
        double[] input = new double[length];
    
        System.out.println("Enter cgpa of students : ");
    
        for (int i = 0; i < length; i++) {
    
            input[i] = adnan.nextDouble();
    
        }
    
        double averageCgpa = averageCgpa(input);
    
        System.out.println("Average of students cgpa :  " + averageCgpa);
    
        adnan.close();
    
    }
    
    
    
    public static double averageCgpa(double[] input) {
    
        double sum = 0f;
    
        for (double number : input) {
    
            sum = sum + number;
    
        }
    
        return sum / input.length;
    
    }
    

    【讨论】:

      【解决方案2】:

      问题在于输入数组数据类型。如果输入数组也需要双精度值(带小数),则需要将输入数组设为双精度值。

      请更改以下行

      int[] input = new int[length];
      

      double[] input = new double[length];
      

      下线

      input[i] = adnan.nextInt(); 
      
      

      input[i] = adnan.nextDouble(); 
      
      

      它适用于两种类型的数字(带小数和不带小数)。

      我希望这能解决您面临的问题。

      【讨论】:

      • 直到现在都显示错误。
      【解决方案3】:

      在java中如果两者都是int,结果也是int。 所以你可以使用 sum / Double.valueOf(input.length);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-03
        相关资源
        最近更新 更多