可能有损转换从double到int

时间:2016-03-21 21:30:24

标签: java

编写一个程序,其中包含两个重载方法,这些方法返回具有以下标题的数组的平均值:

public static int average(int[] array)
public static double average(double[] array)

我的程序包含错误

list2[i] = sc.nextDouble(); // possible lossy conversion from double to int 
return average;   // possible lossy conversion from double to int 

不确定我在我的方法中声明的问题是什么需要声明我不知道为什么我的双输入会给我这个错误

import java.util.Scanner;

public class Lab7A {

public static void Main(String[] args) {


    Scanner sc = new Scanner(System.in);



    System.out.print("Enter 10 Integer values: ");
    int list[] = new int[10];
    for (int i = 0; i < list.length; i++) {
        list[i] = sc.nextInt();
    }

    double avg1 = average(list);
    System.out.println("Average of First Array: " + avg1);
    System.out.println();

    System.out.print("Enter Ten Double Values: ");
    double list2[] = new double[10];
    for (double i = 0; i < list2.length; i++) {
        list2[i] = sc.nextDouble();
    }

    double avg2 = average(list2);
    System.out.println("Average of Second Array: " + avg2);
    System.out.println();
    }
    public static int average(int[] list) {
    double average = 0;
    double total = 0;

    for (int i = 0; i < list.length; i++) {
        total = total + list[i];
    }
    average = total / list.length;
    return average;

}

 public static double average(double[] list2) {
    double average = 0;
    double total = 0;

   for (int i = 0; i < list2.length; i++) {
        total = total + list2[i];
    }
    average = total / list2.length;
    return average;
  }

 }

1 个答案:

答案 0 :(得分:1)

您的average(double[])方法正在尝试使用double作为数组索引,但Java仅允许int作为数组索引。这是“从double到int的可能有损转换”的来源。

其他所有内容都应该是double,但请将您的索引d声明为int以删除此错误。

此外,在该方法的for循环中,条件应为d < list2.length而不是d < 5

此外,int值的平均值可能不一定是int。在average(int[])方法中,声明它返回double,并声明averagedouble。变量avg1也需要double中的main