@Bill_Kim_91

Класс Х публичный и должен быть объявлен в файле с именем Х?

Здравствуйте.
С самой ошибкой я разобрался. Убрал public, оставил его только для GameLauncher и всё скомпилилось и завелось.
Вопрос в другом.
Какой класс правильно объявить публичным?
И почему в книге пример с ошибками (код был из книги)? Возможно связано с тем что книга по java 5.
Буду очень благодарен, если объясните по какому принципу объявлять класс публичным и почему так вышло с примеров книги.

Моя версия JSE
java version "13.0.1" 2019-10-15
Java(TM) SE Runtime Environment (build 13.0.1+9)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)

Ошибка при компиляции. Использую javac без каких либо IDE.
GameLauncher.java:1: error: class GuessGame is public, should be declared in a file named GuessGame.java
public class GuessGame {
^
GameLauncher.java:61: error: class Player is public, should be declared in a file named Player.java
public class Player {
^
2 errors

public class GuessGame {
    Player p1;
    Player p2;
    Player p3;
 
    public void startGame() {
        p1 = new Player();
        p2 = new Player();
        p3 = new Player();
 
        int guessp1 = 0;
        int guessp2 = 0;
        int guessp3 = 0;
 
        boolean p1isRight = false;
        boolean p2isRight = false;
        boolean p3isRight = false;
 
        int targetNumber = (int) (Math.random() * 10);
        System.out.println("Я загадываю число от 0 до 9...");
 
        while(true) {
            p1.guess();
            p2.guess();
            p3.guess();
 
            guessp1 = p1.number;
            System.out.println("Первый игрок думает что это " + guessp1);
 
            guessp2 = p2.number;
            System.out.println("Второй игрок думает что это " + guessp2);
            
            guessp3 = p3.number;
            System.out.println("Третий игрок думает что это " + guessp3);
 
            if (guessp1 == targetNumber) {
                p1isRight = true;
            }
            if (guessp2 == targetNumber) {
                p2isRight = true;
            }
            if (guessp3 == targetNumber) {
                p3isRight = true;
            }
 
            if (p1isRight || p2isRight || p3isRight) {
 
                System.out.println("У нас есть победитель!");
                System.out.println("Первый игрок угадал? " + p1isRight);
                System.out.println("Второй игрок угадал? " + p2isRight);
                System.out.println("Третий игрок угадал? " + p3isRight);
                System.out.println("Конец игры");
                break;
            } else {
                System.out.println("Игроки должны попробовать ещё раз.");
            }
        }
    }
}
 
public  class Player {
    int number = 0;
    public void guess() {
        number = (int)(Math.random() * 10);
        System.out.println("Думаю что это число " + number);
    }
}
 
public class GameLauncher {
    public static void main(String[] args) {
        GuessGame game = new GuessGame();
        game.startGame();
    }
}
  • Вопрос задан
  • 291 просмотр
Пригласить эксперта
Ответы на вопрос 1
Rebel-Cat
@Rebel-Cat
один файл - один public class, лучше сразу на IDE дабы не терять время на подобных ошибках
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы