如何使用方法参数中的数组的平方结果存储和返回数组

时间:2017-05-29 15:21:21

标签: java

public class Practise
{
    public static void main(String[] args)
    {
        double[] array = {1.0,2.0,2.0,4.0};
        System.out.println(square(array));
    }
    public static double[] square (double[] a)
    {
        double [] squared = new double[a.length];
        for (int i = 0; i <a.length ; i++)  {
            squared[i] = a[i] * a[i];
        }
        return squared;
    }

我尝试使用数组值的平方结果更新平方数组,然后将其返回 但我一直得到[D @ 1540e19d错误,对不起,如果这是一个简单的问题,我刚开始学习java!“

5 个答案:

答案 0 :(得分:0)

您正在打印数组对象引用,您应该打印数组的每个单元格,尝试:

public class Practise
{
    public static void main(String[] args)
    {
        double[] array = {1.0,2.0,2.0,4.0};
        double[] result = square(array);

        for(int i = 0; i < result.length; i++)
        {
          System.out.println("Square of " + array[i] + " is: " + result[i]);
        }

    }


    public static double[] square (double[] a)
    {
        double [] squared = new double[a.length];
        for (int i = 0; i <a.length ; i++)  {
            squared[i] = a[i] * a[i];
        }
        return squared;
    }
}

答案 1 :(得分:0)

您需要在代码中进行一些修改: 案例1:

public class Practise {

    public static void main(String[] args) {
        double[] array = {1.0, 2.0, 2.0, 4.0};
        array = square(array); //to get new array from method
        for(int i=0; i<array.length; i++)
            System.out.println(array[i]); // print array by index
    }

    public static double[] square(double[] a) {
        double[] squared = new double[a.length];
        for (int i = 0; i < a.length; i++) {
            squared[i] = a[i] * a[i];
        }
        return squared;
    }
}

<强>输出:

1.0
4.0
4.0
16.0

案例2:

import java.util.Arrays;

public class Practise {

    public static void main(String[] args) {
        double[] array = {1.0, 2.0, 2.0, 4.0};
        System.out.println(Arrays.toString(square(array)));
    }

    public static double[] square(double[] a) {
        double[] squared = new double[a.length];
        for (int i = 0; i < a.length; i++) {
            squared[i] = a[i] * a[i];
        }
        return squared;
    }
}

<强>输出:

[1.0, 4.0, 4.0, 16.0]

在案例1中,您可以控制和处理新数组的输出

答案 2 :(得分:0)

而不是

  System.out.println(square(array));

使用:

System.out.println(Arrays.toString(square(array)));

What's the simplest way to print a Java array?

注意:D @ 1540e19d不是错误。它是十六进制的hashCode()。  见http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--

答案 3 :(得分:0)

您的计划没有错误。您正在打印数组的内存地址,这是[D@1db这样的内容。它是变化的(因为它是内存地址)。

更改:

System.out.println(square(array));

要:

 System.out.println(square(array)[0]);

tihs只会打印索引0值。如果要打印数组中的所有值,可以这样做:

for(Double d: square(array)){
    System.out.println(d);
}

这里我使用了for-each(增强的for循环)。如果您对此不熟悉,请使用for循环。

答案 4 :(得分:0)

如果我是你,我会创建另一个数组来存储double[] array = {1.0, 2.0, 3.0, 4.0};的平方值。我认为你在方法中不需要double[] squared。只需使用参数列表中给出的那个。

public class square {
public static void main (String[] args){
    double[] array = {1.0, 2.0, 3.0, 4.0};
    double[] array1 = squareArray(array);
    for(double elem: array1){
        System.out.println(elem);
    }
}
public static double[] squareArray(double[] a){
    for(int i = 0; i < a.length; i++){
        a[i] *= a[i];
    }
    return a;
}
}

Array1存储数组的平方值。我不太确定你的问题是什么,但如果它只是打印出阵列,那么for-each-loop对初学程序员来说是必须知道的。我在代码中写了它。我强烈建议您开始使用它并提供其功能。希望这有用。