Как завести данный код?Код из книги

У меня ничего не работает, все перепроверила,буквально все из книги переписала,значения 1,9,9 внесла тк нужно указать какое число называют игроки, если я правильно поняла, добавила класс Player и GameLauncher, как и сказанно в книге, но все равно не работает, IDE пишет что я должна классы Player и Gamelauncher cделать не публичными, я делаю, но сообщение все равно висит, в другом более старом обсуждении данной задачки писали что код нормальный, не устаревший, но я уже в этом сомневаюсь.переименовываю файл, но программа ругается, что нужно опять переименовать файл на то, что было до этого

public class GuessGame {
    player p1;
    player p2;
    player p3;

    public void startGame() {
        p1 = new player();
        p2 = new player();
        p3 = new player();
        int guessp1 = 1;
        int guessp2 = 9;
        int guessp3 = 9;
        boolean p1isRight = false;
        boolean p2isRight = false;
        boolean p3isRight = false;
        int targetNumber = (int) (Math.random() * 10);
        System.out.println("Я загадываю число от 0 до 9 ...");
        while (true) {
            System.out.println("Число, которое нужно угадать,- " + targetNumber);
            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();
        }
    }

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

Автор решения: SurfaceStack

В одном файле с кодом может быть только один public класс, причем имя класса должно совпадать с именем файла.

Поэтому такие варианты исправления ошибок:

  1. Убрать public для классов Player и Gamelauncher:
...

class Player {
    ...
}
class Gamelauncher {
    ...
}

В этом случае они будут доступны только в этом файле.

  1. Перенести классы Player и Gamelauncher в файлы с соответствующими названиями.
→ Ссылка
Автор решения: Bondarenko Anatolii

В одном файле *.java может быть только один "public class". Либо ваши паблик классы разнесите по отдельным файлам, либо уберите "public" из других классов.

→ Ссылка