我不能在课堂上设置一个值

时间:2011-12-26 18:40:10

标签: java

我做了两节课。第一个是Player类,第二个是Bag。我想要的是在main()打印玩家的分数。在Bag中,我计算得分,我想在Player中进行设置。这是Bag

的一部分
 public void count( int number)
 { ............. 
   scr=k*2;//gives an int
   setScore(scr);//set the score in Player class
 }

播放器:

public class Player {

public Player() {
}

private String name;
private int score;

public Player(String name, int score) {
    this.name = name;
    this.score = score;
}
 public String getName() { 
     return name;
 }

public void setScore(int score) {
    this.score = score;
}

public int getScore() {
    return score;
}

在main()中,我尝试使用此代码打印得分,但我不能:

Player p=new Player();
System.out.println( p.getScore());

它返回给我score=0(我把它设置在主要的乞讨处)
我希望你明白我想说的话。

4 个答案:

答案 0 :(得分:2)

如果您想为特定玩家设置分数,则需要在该对象上调用setScore 。例如:

public void count(int number)
{
    scr = k * 2;
    player.setScore(scr);
}

其中playerPlayer类型的变量。

但是,这不会影响播放器的得分:

Player p=new Player();
System.out.println(p.getScore());

仍然会打印0,因为 new 播放器的得分仍为0.您需要打印出您在count内设置得分的玩家的得分。

很难给你比这更具体的信息,因为我们不知道你的应用程序的其余部分是如何组合在一起的,但假设每个玩家都有一个独立的分数,你应该考虑哪个要在count方法中更改的玩家得分。

答案 1 :(得分:1)

为此,Bag类应该引用Player类。所以基本上你应该改变你的代码以遵循以下模式

class Bag
{
  private Player p;

  public void setPlayer(Player pp)
  {
    p=pp;
  }

  public Player getPlayer()
  {
    return p;
  }

 public void count( int number)
 { 
   scr=k*2;//gives an int
   p.setScore(scr);//set the score in Player class
 }
}

你的主要方法

Player p=new Player();
Bag b=new Bag();
b.setPlayer(p);
b.count(5);
System.out.println( p.getScore());

答案 2 :(得分:0)

改变这一点。

public void count(int number)
{ 
    Player p=new Player();
    scr=k*2;//gives an int
    p.setScore(scr);//set the score in Player class
}

答案 3 :(得分:0)

玩家和包是不同的类,假设你想要在玩家类中引用玩家类的那些计算,并且玩家类需要这些值,玩家类需要有玩家参考。所以你需要在两个班级做一些改变。

如下所示更改计数方法

  

public void count(Player p,int number){.............
  scr = k * 2; //给出一个int p.setScore(scr); //在Player中设置得分   class}

并更改主要方法,如下所示

  

玩家p =新玩家(); Bag b = new Bag(); b.count(P,5);   System.out.println(p.getScore());