0

使用此函数,我试图查看 myPlayerUp(玩家对象)是否等于玩家向量 myPlayers 中的任何玩家对象。它是说“方法 myPlayers(int) 未定义该类型”,即使上面使用了向量。我要以错误的方式进行比较吗?这是全班

package model;

//import yahtzee.model.boolean;
import java.util.Vector;
//import yahtzee.model.int;
//import yahtzee.model.void;
import model.Player;

public class YahtzeeEngine {

  public static final int MAX_ROLLS= 0;

  private Vector<Player> myPlayers;

  private Roller myRoller;

  private Player myPlayerUp;

  private int myNumberRollsUsed;

  public Vector  myPlayer;

  public YahtzeeEngine(int numPlayers) {
      myPlayers = new Vector<Player>(numPlayers);

      myNumberRollsUsed = 0;
  }

  public void startGame() {
      int i;
      for(i = 0; i<=myPlayers.size(); i++){
          myPlayers.add(new Player());
      }
      this.selectPlayerUp(myPlayers.get(0));
      myNumberRollsUsed = 0;
      myRoller = new Roller();
      myPlayerUp = new Player();
  }

  public void selectPlayerUp(Player player) {
      myPlayerUp = player;
  }

  public void switchPlayerUp() {
 int x;
 int y;
 for(x = 0; x<=myPlayers.size(); x++){
 if(myPlayerUp == myPlayers(x) && x < myPlayers.size()-1){
 y = x;
 }
 if(myPlayerUp == myPlayers(x) && x == myPlayers.size()-1){
 y = 0;
 }
 }
 myPlayerUp = myPlayers(y);
  }

  public boolean incrementRollsUsed() {
      myNumberRollsUsed++;
  return false;
  }

  public void resetNumberRollsUsed() {
      myNumberRollsUsed = 0;
  }

  public Roller getRoller() {
  return myRoller;
  }

  public Player getPlayerUp() {
  return myPlayerUp;
  }

  public Vector<Player> getPlayers() {
  return myPlayers;
  }

  public int getNumberRollsUsed() {
  return myNumberRollsUsed;
  }

  public String toString() {
  return null;
  }

}

这是它给我“myPlayers”向量错误的地方

 public void switchPlayerUp() {
 int x;
 int y;
 for(x = 0; x<=myPlayers.size(); x++){
 if(myPlayerUp == myPlayers(x) && x < myPlayers.size()-1){
 y = x;
 }
 if(myPlayerUp == myPlayers(x) && x == myPlayers.size()-1){
 y = 0;
 }
 }
 myPlayerUp = myPlayers(y);
  }
4

5 回答 5

0

您正在尝试访问这样的向量中的元素myPlayers(x),但是这是说调用一个方法myPlayers,它需要一个 int,并且没有这样的方法。

你想做的是:

myPlayers.get(x);

equals如果您想比较两个球员在他们的领域,而不是他们的参考方面是相同的,那么您可能想要使用比较。你需要覆盖equals

于 2013-10-23T22:02:10.377 回答
0

向量不是函数。你想要get()

另外,请ArrayList改用。

于 2013-10-23T22:00:01.547 回答
0

你想要类的indexOf方法Vector。就像是

y = myPlayers.indexOf(myPlayerUp);
于 2013-10-23T22:02:03.580 回答
0

为了补充 SLaks 所说的,在 Java 中,我们通过覆盖equals()方法来测试对象之间的相等性。

==不会给你你想要的结果,只能用于比较原语是否相等。

于 2013-10-23T22:05:28.300 回答
0

您应该按照此处equals所述在您的 Player 类上实现(事实上,您应该始终在您的自定义类上实现和。您的 IDE 可能可以自动完成)。然后你可以简单地打电话equalshashCode

numPlayers.contains(myPlayer);

如果玩家在Vector. 是如何contains工作的。

如果您需要该职位,则indexOf按照此处所述使用:

numPlayers.indexOf(myPlayer);

如果结果是非负数,那么这就是玩家所在的位置。否则,玩家不存在。

顺便说一句,使用Vector仍然是一件事吗?

于 2013-10-23T22:05:33.723 回答