Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对矩阵使用double_Java_Arrays_Double - Fatal编程技术网

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