Как вызвать метод клаcа(java)

164
30 октября 2019, 16:50
public class lab2 {
    int[][] C;
    byte sum = 0;
    int min;
    class test {
        public void Matrix(byte[][] mas1, byte[][] mas2) {
            for (int i = 0; i <= mas1.length - 1; i++) {
                for (int j = 0; j <= mas1[i].length - 1; j++) {
                    C[i][j] = mas1[i][j] + mas2[i][j];
                }
            }
            for (int j = 0; j <= C[0].length; j++) {
                for (int i = 0; i < C.length; i++) {
                    min = C[i][0];
                    if (min > C[i][j]) {
                        min = C[i][j];
                    }
                }
                sum += min;
            }
        }
    }

       byte mas1[][] = {{5, 7, 1}, {1, 55, 8}, {33, 2, 54}};
       byte mas2[][] = {{45, 49, 21}, {75, 5, 0}};
       lab2 s = new lab2();
       s.Matrix(mas1, mas2);
   }

Только начал изучать джаву. Последняя строчка выдает ошибку. Где ошибка и как правильно реализовать код? Буду благодарен за ответ.

Answer 1

Для того, чтобы вызвать метод вложенного класса, в первую очередь нужно создать экземпляр вложенного класса:

test s = new lab2().new test();

А после этого вызывать s.Matrix(args).

В конце концов, в вашем коде нету метода main и я не очень понимаю, что именно вы запускаете здесь? Вот так вы сможете попасть в желаемый метод:

public class lab2 {
int[][] C = new int[1000][1000];
byte sum = 0;
int min;
class test {
    public void Matrix(byte[][] mas1, byte[][] mas2) {
        for (int i = 0; i <= mas1.length - 1; i++) {
            for (int j = 0; j <= mas1[i].length - 1; j++) {
                C[i][j] = mas1[i][j] + mas2[i][j];
            }
        }
        for (int j = 0; j <= C[0].length; j++) {
            for (int i = 0; i < C.length; i++) {
                min = C[i][0];
                if (min > C[i][j]) {
                    min = C[i][j];
                }
            }
            sum += min;
        }
    }
}
public static void main(String[] args){
   byte mas1[][] = {{5, 7, 1}, {1, 55, 8}, {33, 2, 54}};
   byte mas2[][] = {{45, 49, 21}, {75, 5, 0}};
   test s = new lab2().new test();
   s.Matrix(mas1, mas2);
 }
}

Но вас там будет ждать два exception. Первый NullPointerException так как вы пытаетесь писать какие-то значения в поле C класса lab2, которое не было инициализировано, а второе IndexOutOfBound, который символизирует где-то ошибку в итерации по массиву и выходу за его пределы. Для решения их надо будет самому подебажить ваш метод.

READ ALSO
Как передать Context

Как передать Context

Пишу клавиатуру, пытаюсь вывести информацию из БД

129
CRUD операции в Spring Data JPA и Hibernate

CRUD операции в Spring Data JPA и Hibernate

Spring Data JPA – это не реализация JPA, это абстракция доступа к данным БД

155
Как передать данные из Json в ArrayList

Как передать данные из Json в ArrayList

Пробую высветлить несколько маркеров на карте но не понимаю как правильно создать запрос к Json помогите пожалуста

159