这是我为数组代码编写的代码
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添加十进制数字会起作用但它不起作用.. 有没有什么办法解决这一问题?我会很感激任何提示......谢谢......
答案 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));
}