Java 如何对矩阵使用double
这是我写的代码:Java 如何对矩阵使用double,java,arrays,double,Java,Arrays,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
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)
{
int[] a = {1, 2, 3, 4, 48};
System.out.println(arraySum(a));
System.out.println(arraySumBetter(a));
}
}
但是我希望结果是58.0
我将所有的
int
更改为double
:
public class main
{
public static double arraySum(double[] arr)
{
double result = 0;
for(double i = 0; i < arr.length; i += 1)
{
result += arr[i];
}
return result;
}
public static int arraySumBetter(double[] a)
{
double result = 0;
for(double value : a)
{
result += value;
}
return result;
}
public static void main(String[] args)
{
double[] a = {1, 2, 3, 4, 48};
System.out.println(arraySum(a));
System.out.println(arraySumBetter(a));
}
}
我需要添加更多代码吗?还是别的什么?这是一个有点鬼鬼祟祟的问题:看看这段代码
for (double i = 0; i < arr.length; i += 1) {
result += arr[i];
}
在这种情况下,您将使用arraySumBetter的第一个版本,即
公共静态int-arraySumBetter(int[]a)
您在这个函数中遇到的问题int-arraySumBetter(double[]a)
return
值为int
但您在函数中将result
声明为double
变量,因此当您返回result
时,将出现从double到int的有损转换问题
应该是:
public static double arraySumBetter(double [] a)
此外,数组的索引计数器类型应为整数值:
for (int i = 0; i < arr.length; i += 1) // not double i
问题是数组只能使用整数进行索引。这意味着,
arr[true]
或arr[5.32]
是不允许的
编译器会抱怨,因为它需要将double转换为整数值,这会切断小数点。Java从来没有这样做过—您必须将它转换为整数:
double foo=5.32;
//转换为整数:
intbar=(int)foo;
在您的情况下,不需要类型转换。如果变量i
的类型为int
,则可以正常工作
在第二种方法中,返回类型错误。它返回一个double,但是声明说
public static int arraySumBetter
添加带有
double
变量的代码,以便我们可以查看并告诉issueTry准确发布哪些不起作用,这是应用更改之前的代码。问题是您还需要更改int result代码>到<代码>双重结果
为什么要添加int
(s)得到一个double
结果?我可以看到一个long
或biginger
。但具体地说,为什么是双倍的?另外,在Java8+中,更好的是:intsum=IntStream.of(a).sum()代码>哦。然后在Java8+中,double sum=DoubleStream.of(a).sum()代码>我该怎么办?我不明白。。我的英语很差,对不起,我不懂下面的投票。这个答案是正确的(数组索引是导致第一次编译错误的原因)是的,我总是愿意学习和改进。仅仅是一张匿名的否决票是毫无用处的。如果你投了赞成票,那么有两张匿名的否决票。但不管怎样,如果这对你有帮助,那很重要。
for (int i = 0; i < arr.length; i += 1) // not double i
System.out.printf("%.1f\n",arraySum(a));
System.out.printf("%.1f\n",arraySumBetter(a));
public static int arraySumBetter