Java猜谜游戏

Java猜谜游戏,java,Java,Hy 我对一本书中的一个代码有问题,这本书的标题是Java。。。 (第63/64页) 我重新编写了代码,但它不起作用。有人能解释一下那是什么吗 我在Eclipse中遇到的错误是: Exception in thread "main" java.lang.Error: Unresolved compilation problems: The public type GuessGame must be defined in its own file The public type Player m

Hy

我对一本书中的一个代码有问题,这本书的标题是Java。。。 (第63/64页)

我重新编写了代码,但它不起作用。有人能解释一下那是什么吗

我在Eclipse中遇到的错误是:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The public type GuessGame must be defined in its own file
The public type Player must be defined in its own file

at GuessGame.<init>(GameLauncher.java:1)
at GameLauncher.main(GameLauncher.java:73)
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 BrojKojiTrebaPogodit = (int)(Math.random() * 10);
        System.out.println ("Razmisljam o broju izmedju 0 i 9 ... ");

        while (true){
            System.out.println ("Zamisljeni broj je " + BrojKojiTrebaPogodit);
            p1.guess();
            p2.guess();
            p3.guess();

            guessp1 = p1.number;
            System.out.println ("Player P1 guessed " + guessp1);
            guessp2 = p2.number;
            System.out.println ("Player P2 guessed " + guessp2);
            guessp3 = p3.number;
            System.out.println ("Player P3 guessed " + guessp3);

            if (guessp1 == BrojKojiTrebaPogodit){
                p1isright = true;
            }
            if (guessp2 == BrojKojiTrebaPogodit){
                p2isright = true;
            }
            if (guessp3 == BrojKojiTrebaPogodit){
                p3isright = true;
            }

            if (p1isright || p2isright || p3isright) {
                System.out.println ("We have winner!");
                System.out.println ("Is P1 got it right? " + p1isright);
                System.out.println ("Is P2 got it right? " + p2isright);
                System.out.println ("Is P3 got it right? " + p3isright);
                System.out.println ("Game is over");
                break;
            }
            else {
                System.out.println ("Players will have to try again!");
            }
        }
    }
}

public class Player {
    int number = 0;

    public void guess() {
        number = (int) (Math.random()*10);
        System.out.println("I'm guessing " + number);
    }
}

public class GameLauncher {
    public static void main (String[] imeStringa){
        GuessGame game = new GuessGame();
        game.startGame();
    }
}

THX

在一个.java文件中只能声明一个公共类

每个java文件只能有一个公共类

错误消息告诉您错误:代码未编译(您应该在Eclipse的“Problems”视图中看到红色错误标记),因为Java中的每个公共类都应该在一个单独的文件中定义,该文件具有类的名称:

public class GuessGame --> must be in GuessGame.java

public class Player --> must be in Player.java
包树还必须与目录树相匹配,从源目录开始:

package com.foo.bar;
public class GuessGame  --> must be in com/foo/bar/GuessGame.java

注意:Eclipse允许您启动应用程序,即使它没有编译,但您不应该这样做:它不会工作。

您需要将Player和GameLauncher类放在它们自己的类文件中,或者将括号}移动到GameLauncher类下面的Player类之前,使它们成为内部类。另外,game launcher类必须是静态的,并且有一个额外的括号}在Java中,game launcher类

之后,一个文件中应该只有一个公共类。如果你想拥有多个公共类,那么就选择内部类

为什么一个文件不能有多个公共类。当我开始使用java时,同样的问题也萦绕在我的脑海中。无论我问谁,我都得到了相同的答案——“这就是它的工作方式”

问候,,
John

正如上面提到的许多人一样,你不能有多个公共类…所以只需将其设置为除猜谜游戏外的非公共类。除此之外,我只取了最后一个类,在猜谜游戏中设置了主类,因为它是公共类,将startName设置为静态,并将Player类设置为静态。然后我叫StartName();基本上

public class GuessGame {
static Player p1;
static Player p2;
static Player p3;

public static void main(String[] args) {
  startGame();
}
public static 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 BrojKojiTrebaPogodit = (int)(Math.random() * 10);
    System.out.println ("Razmisljam o broju izmedju 0 i 9 ... ");

    while (true){
        System.out.println ("Zamisljeni broj je " + BrojKojiTrebaPogodit);
        p1.guess();
        p2.guess();
        p3.guess();

        guessp1 = p1.number;
        System.out.println ("Player P1 guessed " + guessp1);
        guessp2 = p2.number;
        System.out.println ("Player P2 guessed " + guessp2);
        guessp3 = p3.number;
        System.out.println ("Player P3 guessed " + guessp3);

        if (guessp1 == BrojKojiTrebaPogodit){
          p1isright = true;
        }
        if (guessp2 == BrojKojiTrebaPogodit){
          p2isright = true;
        }
        if (guessp3 == BrojKojiTrebaPogodit){
          p3isright = true;
        }
        if (p1isright || p2isright || p3isright) {
          System.out.println ("We have winner!");
          System.out.println ("Is P1 got it right? " + p1isright);
          System.out.println ("Is P2 got it right? " + p2isright);
          System.out.println ("Is P3 got it right? " + p3isright);
          System.out.println ("Game is over");
          break;
        }
        else {
          System.out.println ("Players will have to try again!");
        }
      }
    }
  }

  class Player {
  int number = 0;

  public void guess() {
    number = (int) (Math.random()*10);
    System.out.println("I'm guessing " + number);
  }
}

每个.java文件一个公共类


查阅您在第7页上的头先Java一书以供参考。(跳进快速下潜

这里的大多数人讲英语,而不是南斯拉夫语变体,所以最好翻译源代码中的变量:)谢谢大家:)会试试你说的话……非常感谢,现在它正在工作。。。我是诺布:(如果它们不是公共的,我可以多要1个吗?是的,你可以。看: