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!“
答案 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对初学程序员来说是必须知道的。我在代码中写了它。我强烈建议您开始使用它并提供其功能。希望这有用。