Вопрос №378 от пользователя user-dcea3c8a28e5925f в уроке «Модуль 3. Урок 5. Аннотация @Override в Java.», курс «Введение в Java»

user-dcea3c8a28e5925f

при выполнении практики получаю следующие ошибки:

./io/hexlet/java/m101/xo/model/Player.java:4: error: class, interface, or enum expected
io.hexlet.java.m101.xo.model.Figure;
^
io/hexlet/java/m101/xo/Main.java:21: error: constructor AdvConsoleView in class AdvConsoleView cannot be applied to given types;
        final AdvConsoleView advConsoleView = new AdvConsoleView(gameController);
                                              ^
  required: no arguments
  found: GameController
  reason: actual and formal argument lists differ in length
io/hexlet/java/m101/xo/Main.java:22: error: constructor ConsoleView in class ConsoleView cannot be applied to given types;
        final ConsoleView consoleView = new ConsoleView(gameController);
                                        ^
  required: no arguments
  found: GameController
  reason: actual and formal argument lists differ in length
io/hexlet/java/m101/xo/Main.java:39: error: cannot find symbol
        if (!player.getFigure().equals(playerFigure) || !player.getName().equals(playerName)) {
                   ^
  symbol:   method getFigure()
  location: variable player of type Player
4 errors
Error: Could not find or load main class io.hexlet.java.m101.xo.Main
Makefile:2: recipe for target 'test' failed
make: *** [test] Error 1

какую информацию еще предоставить? подскажите, пожалуйста, в чем мои ошибки

18 0

Александр-C Вагин

Добрый день :)

1) Когда вставляете код в комментарий, отформатируйте его пожалуйста, иначе читать не реально. Вот тут простенький гайд https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#code

2) Предоставьте код Board, Player, Main, GameController, AdvConsoleView :)

0

Kirill Mokevnin

Ваши ошибки написаны после error:. Вы пробовали смотреть их в гугл?

0

user-dcea3c8a28e5925f

дня 3 провозился с этими ошибками, пробовал искать в гугл, но моих знаний сейчас не достаточно, чтобы понять в чем ошибка, также пробовал все сделать как в видео текущего и следующего уроках, также смотрел код репозитория где эти классы уже реализованы.

0

user-dcea3c8a28e5925f

можно ли как-то удалять некорректные комментарии?

0

Kirill Mokevnin

обратите внимание на галку справа от комментария

0

user-dcea3c8a28e5925f

class Board

package io.hexlet.java.m101.xo.model;

public class Board {

  private Figure figure11 = new Figure(" ");
  private Figure figure12 = new Figure(" ");
  private Figure figure13 = new Figure(" ");
  private Figure figure21 = new Figure(" ");
  private Figure figure22 = new Figure(" ");
  private Figure figure23 = new Figure(" ");
  private Figure figure31 = new Figure(" ");
  private Figure figure32 = new Figure(" ");
  private Figure figure33 = new Figure(" ");
}

class Player

package io.hexlet.java.m101.xo.model;
import io.hexlet.java.m101.xo.model.Board;
io.hexlet.java.m101.xo.model.Figure;

public class Player {

  private final Figure figure;

  private final String name;

  public String getName() { return name; }

  public Figure gerFigure() { return figure;}

  public Player(final String name, final Figure figure) {
      this.name = name;
      this.figure = figure;
  } 
}

class GameController

package io.hexlet.java.m101.xo.controller;
import io.hexlet.java.m101.xo.model.Player;
import io.hexlet.java.m101.xo.model.Figure;

public class GameController {

  private final String gameName;

  private Player[] players;

  public GameController(final String gameName) {this.gameName = gameName;}

  public String getGameName() {return gameName;}

  public Player currentPlayer() {return null;}

  public boolean move(final int x, final int y) {return false;}

  public Player[] getPlayers() {return players;}
}

class AdvConsoleView

package io.hexlet.java.m101.xo.view;

import io.hexlet.java.m101.xo.controller.GameController;

public class AdvConsoleView extends ConsoleView {

   // public AdvConsoleView(final GameController gameController) {
   //     super(gameController);
    //}

    @Override
    public void showGameName() {
        System.out.println("***");
        System.out.println(gameController.getGameName());
    }
}

class Main, в этот класс я изменений не вносил, они уже был написан в практике

package io.hexlet.java.m101.xo;

import io.hexlet.java.m101.xo.controller.GameController;
import io.hexlet.java.m101.xo.model.Board;
import io.hexlet.java.m101.xo.model.Figure;
import io.hexlet.java.m101.xo.model.Player;
import io.hexlet.java.m101.xo.view.AdvConsoleView;
import io.hexlet.java.m101.xo.view.ConsoleView;

public class Main {

    public static void main(String[] args) {

        testBoard();
        testFigure();
        testGameController();
        testPlayer();

        final GameController gameController = new GameController("XO");
        final AdvConsoleView advConsoleView = new AdvConsoleView(gameController);
        final ConsoleView consoleView = new ConsoleView(gameController);
        startGame(advConsoleView);
        startGame(consoleView);
    }

    private static void testFigure() {
        final String figureName = "A";
        final Figure figure = new Figure(figureName);
        if (!figure.getFigure().equals(figureName)) {
            throw new RuntimeException("Figure test failure");
        }
    }

    private static void testPlayer() {
        final String playerName = "Max";
        final Figure playerFigure = new Figure("A");
        final Player player = new Player(playerName, playerFigure);
        if (!player.getFigure().equals(playerFigure) || !player.getName().equals(playerName)) {
            throw new RuntimeException("Player test failure");
        }
    }

    private static void testBoard() {
        final Board board = new Board();
    }

    private static void testGameController() {
        final String gameName = "XO";
        final GameController gameController = new GameController(gameName);
        if (!gameController.getGameName().equals(gameName)) {
            throw new RuntimeException("GameController test failure");
        }
        gameController.move(0, 0);
        gameController.currentPlayer();
    }

    private static void startGame(final ConsoleView consoleView) {
        consoleView.showGameName();
        consoleView.showPlayersName();
    } 
}
1

Александр-C Вагин

Figure еще дайте) (Текст ошибок можно было просто отредактировать в посте)

0

Александр-C Вагин

А что конкретно, вам не понятно в ваших ошибках? Вот, например:

io/hexlet/java/m101/xo/Main.java:21: error: constructor AdvConsoleView in class AdvConsoleView cannot be applied to given types;
    final AdvConsoleView advConsoleView = new AdvConsoleView(gameController);

Ну вы же закомментировали конструктор, который принимает на вход GameController gameController!

Если вы не знаете англ языка, то попробуйте вставлять текст ошибок в переводчик (translate.google)& Если совсем не понимаете о чем ошибка, пробуйте искать информацию по ней (в жизни программиста это происходит очень часто). Например, запрос по первой ошибке может выглядеть так. И там сразу куча ссылок на stackoverflow, где подробно объясняют их причину :)

Попробуйте сами справиться с вашими ошибками следуя моим советам, о результате отписывайте ;)

0

user-dcea3c8a28e5925f

Спасибо. Этот метод я закоментил так как его нет в uml диаграме, его я подсмотрел либо в следующем уроке либо в репозитории. Так как его нет в диаграмме я посчитал что он не нужен для реализации практики по этому уроку.

Ошибки поищу в гугл, постараюсь найти на них ответ самостоятельно и отпишусь.

Еще такой вопрос. Последние 3 ошибки возникают в классе Main, этот класс уже был создан в практике, и в него по заданию вносить изменения не нужно. Возникшие ошибки в классе Main возникают из-за допущенных ошибок в других классах и чтобы их исправить необходимо изменять другие классы?

2

Александр-C Вагин

Конечно, в первую очередь нужно думать где была допущена ошибка в вашем коде ( в тексте сообщения обычно содержатся подсказки, например, вызов кода, который писали или дополняли вы)!

0

user-dcea3c8a28e5925f

Первую ошибку решил. Не правильно указал код, упустил слово import.

2-я и 3-я ошибки также больше не появляются. по 2-й раскоментил public AdvConsoleView.

по 3-й добавил метод в класс ConsoleView

public ConsoleView(final GameController gameController) {
    }

Честно говоря суть 2-й и 3-й ошибок пока не осознал, это получилось методом проб. еще поищу инфу по ним.

сейчас осталась только последняя ошибка.

1

Александр-C Вагин

Проанализируйте свои пробы - это может натолкнуть на понимание тех ошибок :) Рад, что у вас получается!

3

user-dcea3c8a28e5925f

Александр, спасибо вам за помощь. Продолжаю разбираться. 4-ю ошибку понял, суть в том что был не определен method getFigure() в классе Player. Я допустил ошибку в этом классе и вместо getFigure написал gerFigure.

На текущий момент есть одна ошибка:

io/hexlet/java/m101/xo/model/Figure.java:15: error: variable figure might not have been initialized
  }
  ^
1 error

пробовал добавить инициализации в класс, ошибка остается. то что я пробовал добавлять сейчас закоментил, вот как выглядит мой класс Figure:

package io.hexlet.java.m101.xo.model;

public class Figure {

  private final String figure;

  public String getFigure() {
    //this.figure = figure;  
    return figure;     
  }

  public Figure(final String figureName) {
   //this.figureName = figureName;    
  }
 }

продолжаю разбираться

0

user-dcea3c8a28e5925f

дайте подсказку. суть инициализации как я понимаю состоит в присвоении какого-то значения переменной. но как это применить здесь пока не понял.

0

Александр-C Вагин

    //this.figure = figure;  

Метод getFigure может и не вызываться никогда, так ведь? И переменная при этом никогда не будет проинициализировна!

0

user-dcea3c8a28e5925f

означает ли это что переменная figure должна быть инициализирована не зависимо от вызова метода getFigure?

0

Александр-C Вагин

Получается, что так :) Я не писал на java :D

1

user-dcea3c8a28e5925f

это ошибку решил следующим способом:

public Figure(final String figureName) {
  figure = figureName;       
  }

решение посмотрел на репозитории, суть его понимаю

2

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
18 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
18 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
18 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
18 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
18 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
18 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
18 мая 5 месяцев