java - 数组得到标准化,为什么?

标签 java arrays normalization

好吧,我有两个 java 类:

public class MaximumNormalize {

    public static void display(double z1, double z2) {
       System.out.println("doubles are "+z1+" and "+z2);
    }

    public static void display(double[] zahlen) {
       System.out.println("double-array with length "+zahlen.length+" :");

       for (int i=0; i<zahlen.length; i++) {
           System.out.println("Element "+i+" is "+zahlen[i]);
       }
    }

    public static double maximum (double z1, double z2) {
       if (z1>=z2) return z1;
       else return z2;
    }

    public static double maximum (double[] zahlen) {
       double ret = 0;
       for (int i = 0; i < zahlen.length; i++) {
           if (ret < zahlen[i]) ret = zahlen[i];
       }
       return ret;
    }

    public static void normalize (double z1, double z2, double diff) {
       z1 /= diff;
       z2 /= diff;
    }

    public static void normalize (double[] zahlen, double diff) {
       for (int i = 0; i < zahlen.length; i++) {
           zahlen[i] /= diff;
       }
    }
}


public class TestMaximumNormalize {
    public static void main (String[] args) {
       double[] meineZahlen = {6.5, 7.0, 6., 5.5, 6.5, 7.5};
       double x1 = 10.5;
       double x2 = 9.5;

       System.out.println("before:");
       MaximumNormalize.display(x1, x2);
       MaximumNormalize.display(meineZahlen);

       double maximumEinzeln;
       maximumEinzeln = MaximumNormalize.maximum(x1, x2);
       MaximumNormalize.normalize(x1, x2, maximumEinzeln);

       double maximumVomArray;
       maximumVomArray = MaximumNormalize.maximum(meineZahlen);
       MaximumNormalize.normalize(meineZahlen, maximumVomArray);

       System.out.println();
       System.out.println("after:");
       MaximumNormalize.display(x1, x2);
       MaximumNormalize.display(meineZahlen);
      }
}

为什么双数组存储标准化值?我本以为没有任何变化,因为规范化方法是无效的。但是,数组接收新值,而 double 值则不会。

最佳答案

normalize (double[] zahlen, double diff) 方法中,您传递的是 double 组,在 Java 中通过引用传递。因此,如果您在方法内部修改它,它将修改原始数组。

关于java - 数组得到标准化,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206935/

相关文章:

时间:2018-03-08 标签:c++opengl: how to find normalized vectors for a quad?

mysql - 字段相关时的数据库结构

java - 如何访问 JLIST 中的特定元素?

java - 父类中模板方法的右访问修饰符

java - 受 Quartz DisallowConcurrentExecution 影响的作业会发生什么

python - 如何在 Python 中对列表运行算法并将结果存储在列表中?

java - 如何使用 Quarkus/RestAssured 仅为一个测试用例注入(inject)模拟

php - Mysqli 到 PHP 到 JSON

python - 如何设置 numpy 数组的每个元素的 alpha 值

mysql - 按程序规范化 mySQL 中的表数据