为了账号安全,请及时绑定邮箱和手机立即绑定

java关于调用其他类中的属性

java关于调用其他类中的属性

慕容3067478 2022-07-14 16:57:34
class GameLauncher{    public static void main(String[] args){        GuessGame Game1 = new GuessGame();        Game1.startGame(p1);        Game1.startGame(p2);        Game1.startGame(p3);    } }public class GuessGame {    public Player p1 = new Player();    public Player p2 = new Player();    public Player p3 = new Player();    void startGame(Player p){        Scanner scanner = new Scanner(System.in);        int n = scanner.nextInt();        p.guess(n);    }}class Player{    private int number;    Player(){        number = (int)Math.random();    }    void guess(int n){        if(number == n){            System.out.println("the correct answer");        }        System.out.println("the wrong answer");    }}我的代码有一些错误:Game1.startGame(p1); Game1.startGame(p2); Game1.startGame(p3);编译器说它找不到p1, p2, p3的符号,但我已经在GuessGame类中初始化了Player如何修复错误?对不起我的英语不好。
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

p1、p2 和 p3 在您的 GuessGame 类中声明,因此您的 GameLauncher 方法看不到这些。您应该将这些变量设为全局变量,或者在 GameLauncher 中声明它们,因为您的 GuessGame 不使用它们。


编辑代码:


class GameLauncher{

public static void main(String[] args){

Player p1 = new Player();

Player p2 = new Player();

Player p3 = new Player();

    GuessGame Game1 = new GuessGame();

    Game1.startGame(p1);

    Game1.startGame(p2);

    Game1.startGame(p3);

    } 

}

public class GuessGame {


void startGame(Player p){


Scanner scanner = new Scanner(System.in);

int n = scanner.nextInt();

p.guess(n);


}

}


class Player{

     private int number;

        Player(){

         number = (int)Math.random();

    }

    void guess(int n){

        if(number == n){

        System.out.println("the correct answer");}

        System.out.println("the wrong answer");

    }


}


查看完整回答
反对 回复 2022-07-14
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

如果你想运行代码:

  • 将您的 main() 方法放在公共类中

  • 利用 。用于访问 GuessGame 属性的运算符。

如果您希望您的代码更好:

  • 更改 GuessGame 中的访问修饰符:public -> private 并使用 getter/setter 进行访问。

  • 对guess() 方法使用if/else 表达式。


公共类 GameLauncher {

    public static void main(String[] args) {


        GuessGame game1 = new GuessGame();

        Player p1 = new Player();

        Player p2 = new Player();

        Player p3 = new Player();


        game1.startGame(p1);

        game1.startGame(p2);

        game1.startGame(p3);

    }

}


class GuessGame {

    void startGame(Player p) {

        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();

        p.guess(n);


    }

}


class Player {

    private int number;


    Player() {

        number = (int) Math.random();

    }


    void guess(int n) {

        if (number == n) {

            System.out.println("the correct answer");

        } else {

            System.out.println("the wrong answer");

        }

    }

}


查看完整回答
反对 回复 2022-07-14
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您必须使用Game1.startGame(Game1.p1)sincep1GuessGameand not的实例字段GameLauncher



查看完整回答
反对 回复 2022-07-14
  • 3 回答
  • 0 关注
  • 177 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信