Как я могу использовать переменную из другого класса в Java - PullRequest
0 голосов
/ 17 ноября 2011

Пожалуйста, помогите мне, как я могу использовать переменную из deviation_2DArray.java в NBC.java , в NBC.java Я хочу в среднем b[i]d[i][j] и c[j]

Пример:

b[1]=avg (d[1][1]+d[1][2]+.....+d[1][5])

Заранее спасибо.

2DArray.java

public class 2DArray {

    public static void main(String[] args) {

        double[][] d = new double[6][4];

        double[][] e = {
            {}, {
                0.0, 0.6, 0.0, 0.0
            }, {
                0.0, 0.2, 0.5, 0.1
            }, {
                0.0, 0.2, 0.5, 0.4
            }, {
                0.0, 0.2, 0.5, 0.7
            }, {
                0.0, 0.0, 0.0, 0.9
            }
        };

        double[] avg = new double[4];
        double[] sum = new double[4];
        int i, j, k;

        //average of column
        for (j = 1; j < e[1].length; j++) {
            for (i = 1; i < e.length; i++)
            System.out.println("e[" + i + "][" + j + "] = " + e[i][j]);
        }

        for (j = 1; j < e[1].length; j++) {

            sum[j] = 0.0;
            k = 0;
            for (i = 1; i < e.length; i++)

            if (e[i][j] > 0.0) {
                sum[j] += e[i][j];
                k++;
            }
            avg[j] = sum[j] / k;

            System.out.println("Average of j[" + j + "] = " + avg[j]);

        }

        for (j = 1; j < e[1].length; j++) {
            for (i = 1; i < e.length; i++)

            if (e[i][j] > 0.0) {

                d[i][j] = Math.abs(e[i][j] - avg[j]);
                System.out.println("d[" + i + "][" + j + "] = " + d[i][j]);

            }
        }

    }
}

NBC.java

public class NBC {
    public static void main(String[] args) {

        double[] b = new double[6];
        double[] c = new double[4];
        int count;

        b[i] = d[i][j] / count;
    }

}

Ответы [ 3 ]

1 голос
/ 17 ноября 2011

Вам необходимо создать поля уровня класса в классе 2DArray и предоставить методы получения для этих полей.Тогда NBC должен иметь экземпляр 2DArray, если вы не сделали эти поля / получатели статическими.

В настоящее время ваша переменная d в 2DArray находится только в области действия основного метода, поэтомупросто предоставление получателя не решит проблему, потому что d имеет только область действия в методе.

Кроме того, у каждого класса есть свой собственный метод main.Вы можете выполнить только один main для каждого приложения.Итак, как ваш поток контроля становится с 2DArray до NBC?Если 2DArray вызывает NBC, вы можете передать массив в качестве аргумента.

1 голос
/ 17 ноября 2011

Я повторю это одним простым словом: getters .

0 голосов
/ 17 ноября 2011

Создайте метод в 2DArray как-то так:

public double getElement(int i, int j) {
  return d[i][j];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...