使用双

时间:2017-03-25 15:31:41

标签: java double

这是我为数组代码编写的代码

public class main
{
  public static int arraySum(int[] arr)
  {
    int result = 0;
    for (int i = 0; i < arr.length; i++)
    {
      result += arr[i];
    }
    return result;
  }
  public static int arraySumBetter(int [] a)
  {
    int result = 0;
    for (int value : a)
    {
      result += value;
    }
    return result;
  }

  public static void main(String [] args)
  {
    double[] a ={0,2,3,1,0.56};
    System.out.format("%.1f", (double) arraySumBetter(a));
  }
}

当我运行它时会输出错误:

  

typed.java:25:错误:不兼容的类型:double []不能   转换为int []       System.out.format(“%。1f”,(double)arraySumBetter(a));

     

注意:有些消息已经简化;重新编译   -Xdiags:verbose得到完整的output1错误

我认为使用double添加十进制数字会起作用但它不起作用.. 有没有什么办法解决这一问题?我会很感激任何提示......谢谢......

2 个答案:

答案 0 :(得分:1)

您无法从类型转换为完全不同的非相关类型。据说double != int。而不是在这里施展

   System.out.format("%.1f", (double) arraySumBetter(a));
                               ^ remove

您可以将方法更改为接受double[]数组作为参数,如此

public static double arraySumBetter(double[] a)
  {
    double result = 0;
    for (double value : a)
    {
      result += value;
    }
    return result;
  }

请注意,我将原始类型从int更改为double,否则您将丢失小数点。

答案 1 :(得分:1)

在你的函数中使用double作为IN和OUT ..查看我的评论

  public static int arraySum(int[] arr)
  {
    int result = 0;
    for (int i = 0; i < arr.length; i++)
    {
      result += arr[i];
    }
    return result;
  }
  public static double arraySumBetter(double [] a) //<<<<<<<<<<<< IN: double, OUT: also double, else the decimals are lost 
  {
    double result = 0; //<<<<<<<<<< here use double, else you loose decimals
    for (double value : a) //<<<<<<<<<<<<<<<<<<<<<<<<<< value is double, because a is double[]
    {
      result += value;
    }
    return result;
  }

  public static void main(String [] args)
  {
    double[] a ={0,2,3,1,0.56};
    System.out.format("%.1f", (double) arraySumBetter(a));
  }