Проблема с обращением к элементу поля массива полей

По идее, простая задача из учебника, но поскольку понимание принципов пока хромает на обе ноги, прошу показать, как это работает:

class Level {
    private final LevelInfo levelInfo;
    private final Point[] points;

    public Level(LevelInfo levelInfo, Point[] points) {
        this.levelInfo = levelInfo;
        this.points = points;
    }
    static int res = 0;

//метод, который не могу родить, не соображу как обратится к переменной поля массива полей 
     
int i = points.length - 1;
while (i > 0) {
    //aux = points[i];
    res = res + (Point.x * Point.y);
    i--;
    System.out.println(Point.x + " * " + Point.y + " = " + res); //явно как-то не так
    System.out.println("iter  = " + i);

}
//int res = (Point.x * Point.y);
//System.out.println("p4 = " + p4.getX());
return res;
}

static class LevelInfo {

    private static String name;
    private static String difficulty;
    // private LevelInfo levelInfo;
    // private Point[] points;
    public String getName() {
        return name;
    }
    public String getDifficulty() {
        return difficulty;
    }

    public LevelInfo(String name, String difficulty) {
        LevelInfo.name = name;
        LevelInfo.difficulty = difficulty;
    }
}

static class Point {
    private static int x;
    private static int y;

    public int getX() {
        return x;
    }
    public int getY() {
        return y;
    }
    public Point(int x, int y) {
        Point.x = x;
        Point.y = y;
    }

    @Override
    public String toString() {
        return "Quarke level, name is " + LevelInfo.name + 
        ", difficulty is " + LevelInfo.difficulty +
        ", point count is " + points.length;
    }
}

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

        //**инициализация массива** 


        Level.Point p1 = new Level.Point(43, 36);
        Level.Point p2 = new Level.Point(38, 31);
        Level.Point p3 = new Level.Point(44, 38);
        Level.Point p4 = new Level.Point(44, 42); // 6282

        Level.Point[] points = {p1, p2, p3, p4};

        Level.LevelInfo info = new Level.LevelInfo("Quarke Intro", "Easy");

        //вот тут вызывается метод
        System.out.println(new Level(info, points).calculateLevelHash());
        System.out.println("p4 = " + p4.getX());

    }
}

значальное условие :алгоритм хеширования очень простой. Для каждой точки мы умножаем координаты x и y, и складываем сумму всех этих умножений. Полученное число и будет хешем.

Задание В классе Level напиши метод calculateLevelHash(), который бы возвращал число в соответствии с описанным выше алгоритмом.

изначальный код :

    class Level {
    private LevelInfo levelInfo;
    private Point[] points;

    public Level(LevelInfo levelInfo, Point[] points) {
        this.levelInfo = levelInfo;
        this.points = points;
    }

    @Override
    public String toString() {
        return "Quarke level, name is " + levelInfo.getName() + ", difficulty is " + levelInfo.getDifficulty() + ", point count is " + points.length;
    }

    static class Point {
        private int x, y;

        public Point(int x, int y) {
            this.x = x;
            this.y = y;
        }

        public int getX() {
            return x;
        }

        public int getY() {
            return y;
        }
    }

    static class LevelInfo {
        private String name;
        private String difficulty;

        public LevelInfo(String name, String difficulty) {
            this.name = name;
            this.difficulty = difficulty;
        }

        public String getName() {
            return name;
        }

        public String getDifficulty() {
            return difficulty;
        }
    }
}

class LevelTest {
    public static void main(String[] args) {
        Level.Point p1 = new Level.Point(3, 5);
        Level.Point p2 = new Level.Point(10, 100);
        Level.Point p3 = new Level.Point(50, 40);

        Level.Point[] points = {p1, p2, p3};

        Level.LevelInfo info = new Level.LevelInfo("Quarke Intro", "Easy");

        //3015
        System.out.println(new Level(info, points).calculateLevelHash());
    }
}

введите сюда код


Ответы (1 шт):

Автор решения: Олег

под скрип ржавых шестеренок в тощем мозге сообразил как :

public int calculateLevelHash() {
    int res = 0;
    for (int i = 0 ; i < points.length; i++) {
        res =  res + (points[i].x * (points[i].y)) ;
        System.out.println(points[i].x + " * " + (points[i].y) + " = " + res);
        System.out.println("iter  = " + i);
        System.out.println("res = " + res);
     }
     return res;
}

отмена тревоги

→ Ссылка