【问题标题】:Java Array Computing [duplicate]Java 数组计算 [重复]
【发布时间】:2014-01-17 21:13:47
【问题描述】:
int n = 10;
double[] x = {2.5,0.5,2.2,1.9,3.1,2.3,2,1,1.5,1.1};
double[] y = {2.4,0.7,2.9,2.2,3.0,2.7,1.6,1.1,1.6,0.9};

double sumx = 0.0, sumy = 0.0, sumx2 = 0.0;
for(int i = 0; i < n; i++) {
    sumx += x[i];
    sumy += y[i];
}

double xbar = sumx / n;
double ybar = sumy / n;

我有 x 和 y 的平均值的 2 个结果现在我想创建一个新数组,但是这个新数组应该包括例如:

double[] x1 =[2.5-xbar,0.5-xbar,.....];
double[] x2 =[2.4-ybar,0.7-ybar,.....];

我想通过使用任何循环来获取这些数组,我尝试构建但未能成功。 我的代码:

double[] xadj = new double[10],yadj = new double[10];
for(int i=0;i<n-1;i++){
    xadj[i]+=x[i]-xbar;
    yadj[i]+=y[i]-ybar;
}

System.out.println(xadj);
System.out.println(yadj);

[输出]:

[D@17dfafd1
[D@5e8fce95

我该如何解决这个问题?

【问题讨论】:

  • 如果要打印数组的内容,请使用System.out.println(Arrays.toString(xadj))
  • 或者打印 - 遍历数组并分别打印出每个哀叹
  • 也不要用n,可以用array.length
  • System.out.println(Arrays.toString(xadj)) 解决的问题;谢谢。 ZouZou,如果您输入答案,我将接受它作为真实答案
  • @user3138900 虽然 zouzou 的评论是正确的,但我在回答中指出您应该阅读的另一个问题

标签: java arrays


【解决方案1】:

System.out.println(xadj);

System.out.println(yadj);

您正在打印对数组的引用,因此是输出。

尝试遍历数组并打印每个元素或使用Arrays.toString() 进行打印

每个对象都有一个toString() 方法,默认方法是显示对象的类名表示,然后是“@”,后跟其哈希码。因此,您看到的是数组的默认 toString() 表示形式。

参考[1]Java arrays printing out weird numbers, and text

【讨论】:

    【解决方案2】:

    您的“结果”是内存中xadjyadj 对象的内存地址,因为您只是打印了对该对象的引用,而不是该对象中的每个单元格。最简单的初学者方法是使用另一个 for 循环来打印结果。

    代替:

    System.out.println(xadj);
    System.out.println(yadj);
    

    试试:

    for(int i = 0; i < n; i++) {
        System.out.println(xadj[i]);
        System.out.println(yadj[i]);
    }
    

    【讨论】:

      【解决方案3】:

      你可以使用Arrays.toString(double[])

      返回指定内容的字符串表示 大批。字符串表示由数组的列表组成 元素,括在方括号 ("[]") 中。相邻元素是 用字符“,”(逗号后跟一个空格)分隔。 通过 String.valueOf(double) 将元素转换为字符串。 如果 a 为 null,则返回“null”。

      但是您的代码中有一些罕见的东西。使用 array.length 而不是硬编码的 n。此外,您不必+= 只需分配=

      double[] xadj = new double[10],yadj = new double[10];
              for(int i=0;i< x.length ;i++){
                  xadj[i]=x[i]-xbar;
                  yadj[i]=y[i]-ybar;
              }
      
              System.out.println(Arrays.toString(xadj));
              System.out.println(Arrays.toString(xadj));
      

      你看到了什么

      [D@17dfafd1

      array toString() 在 double 数组上打印数组的类型 ([D),后跟其 hashCode。

      【讨论】:

        猜你喜欢
        • 2021-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        • 2020-10-04
        • 2012-11-01
        相关资源
        最近更新 更多