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

Dmitry Skurikhin

сделал задание в IntelliJ IDEA. вместо некоторых методов типа move(), currentPlayer() и showPlayersName() поставил заглушки. т.к. не понимаю,что там должно быть. в итоге в IDEA все компилируется и запускается. скопировал код в практику - не компилируется. ошибки не понимаю. что-то ненормальное

6 0

Rakhim D.

Давайте разбираться, какой у вас код и какие ошибки выводятся?

0

Dmitry Skurikhin

Ошибка такая: javac io/hexlet/java/m101/xo/Main.java io/hexlet/java/m101/xo/model/Board.java io/hexlet/java/m101/xo/model/Figure.java io/hexlet/java/m101/xo/controller/GameController.java io/hexlet/java/m101/xo/view/AdvConsoleView.java io/hexlet/java/m101/xo/view/AdvConsoleView.java; java -ea io.hexlet.java.m101.xo.Main -cp . io/hexlet/java/m101/xo/Main.java:53: error: cannot find symbol private static void startGame(final ConsoleView consoleView) { ^ symbol: class ConsoleView location: class Main io/hexlet/java/m101/xo/controller/GameController.java:21: error: cannot find symbol public Player[] currentPlayer() { ^ symbol: class Player location: class GameController io/hexlet/java/m101/xo/view/AdvConsoleView.java:5: error: cannot find symbol public class AdvConsoleView extends ConsoleView { ^ symbol: class ConsoleView io/hexlet/java/m101/xo/Main.java:16: error: cannot find symbol final ConsoleView consoleView = new ConsoleView(gameController); ^ symbol: class ConsoleView location: class Main io/hexlet/java/m101/xo/Main.java:16: error: cannot find symbol final ConsoleView consoleView = new ConsoleView(gameController); ^ symbol: class ConsoleView location: class Main io/hexlet/java/m101/xo/Main.java:32: error: cannot find symbol final Player player = new Player(playerName, playerFigure); ^ symbol: class Player location: class Main io/hexlet/java/m101/xo/Main.java:32: error: cannot find symbol final Player player = new Player(playerName, playerFigure); ^ symbol: class Player location: class Main io/hexlet/java/m101/xo/view/AdvConsoleView.java:11: error: method does not override or implement a method from a supertype @Override ^ io/hexlet/java/m101/xo/view/AdvConsoleView.java:14: error: cannot find symbol System.out.println(gameController.getGameName()); ^ symbol: variable gameController location: class AdvConsoleView 9 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 Run failed! Check and fix errors above!

0

Dmitry Skurikhin

Main выглядит так (менял только import):

import model.; import controller.; import view.*;

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();
}

}

ругань на startGame private static void startGame(final ConsoleView consoleView) { consoleView.showGameName(); consoleView.showPlayersName(); }

0

Dmitry Skurikhin

Также Player package model;

public class Player { public final Figure figure; public final String name;

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

public String getName() {
    return name;
}

public Figure getFigure() {
    return figure;
}

}

GameController

package controller;

import model.*;

public class GameController { public final String gameName;

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


public String getGameName() {
    return gameName;
}

public Boolean move(int x, int y) {
    return true;
}

public Player[] currentPlayer() {
    return null;
}

}

ConsoleView

package view;

import controller.GameController; import model.Player;

public class ConsoleView { public final GameController gameController;

public ConsoleView(GameController gameController) {
    this.gameController = gameController;
}

public void showGameName() {
    System.out.println(gameController.getGameName());
}

public void showPlayersName() {
    System.out.println("???");
}

}

AdvConsoleView

package view;

import controller.GameController;

public class AdvConsoleView extends ConsoleView {

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

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

}

0

Dmitry Skurikhin

если что, я разобрался в ошибке. напутал public/private в нескольких местах (странно, что intelliJ Idea это съел...) + оказалось, что надо в практике абсолютные пути в package и import указывать. хотя в intelliJ Idea достаточно было относительных.

1

Глеб Бочкарёв

Рады, что у Вас всё получилось.

0

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

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

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

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

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

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

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