【问题标题】:Call of a method that returns int[] [closed]调用返回 int[] 的方法 [关闭]
【发布时间】:2015-02-09 01:03:55
【问题描述】:

我有以下代码:

 public int[] getState() {

    int[] a = new int[SIZE];
    for (int i = 0; i < SIZE; i++) { a[i] = mCells[i].getState(); }
    return a;
}

public void setState(int player, int[] state){

    setCurrentPlayer(player);
    //state = new int[9];
    // have tried this.getState();
    state = getState();

}

但我得到以下编译器错误:

Your code did not compile: /testClass.java:25: cannot find symbol
symbol  : method getState()
location: class testClass
state = getState();
    ^
1 error

我有两个类 CellState

public int getState(){
    return mState;
}

GameState 具有第一个 getState 和以下属性:

private CellState[] mCells;

你能建议吗?

提前非常感谢! :)

【问题讨论】:

  • 请显示重现编译错误的minimal, complete example
  • 如果您在您的testClass 中调用您的getState(),但它在您的CellState 中实现,您应该通过创建CellState 的实例来调用它! state = getState(); 不是正确的做法。
  • 您好,我正在使用web IDE(这是我学习android dev的课程),请查看以下链接中的图片link跨度>
  • @OmarBISTAMI GameState gState = new GameState(); gState.getState(); 怎么样?
  • 我在 GameState 中还没有构造函数,请注意 getState() 方法是在 GameState 类中声明的。您认为问题是由 Web IDE 引起的吗?在我的 android studio 中我没有任何错误(没有测试类)

标签: java class methods int call


【解决方案1】:

TestClass.java 中的state = getState() 与 state = this.getState() 相同,正如你所说,你也尝试过。这意味着Java 正在TestClass.java. 中寻找一个名为getState() 的方法您是否要在CellState.java 中调用getState() 方法?如果是这样,您需要一个 CellState 对象的实例来调用 getState() 方法。例如,这样的代码应该在TestClass.java 中编译。

CellState myCellState = new CellState();
//do things with myCellState
myCellState.getState();

【讨论】:

  • 嗨,谢谢你的回答,我正在尝试打电话给GameState.getState(),他打电话给CellState.getState() ,我也在使用网络IDE(它是一个Android课程),请检查链接:link
  • 同样的概念也适用。如果你试图调用GameStategetState()方法,那么你需要一个GameState的实例来调用getState()
  • 即使方法在类GameState中声明?您认为问题是由 Web IDE 引起的吗?在我的 android studio 中我没有任何错误(没有测试类)
  • 我不确定直接调用该方法是否是您想要的。看起来getState() 返回一个int。在您的setState() 方法中,变量stateints 的数组。不能为类型为 int[]ints 的数组)的变量分配 int 的值。
  • public int[] getState(){ int[] a = new int[SIZE]; for(int i=0;i&lt;SIZE;i++){ a[i] = mCells[i].getState(); } return a; } my getState() 应该返回一个 in[] 对吗?
【解决方案2】:

我找到了解决方案:

public void setState(int player, int[] state){ 
setCurrentPlayer(player); 

for(int i=0;i<SIZE;i++){ 
   mCells[i].setState(state[i]); 
} 
} 

我的第一个声明是正确的,但是在 Web IDE 中,我不太明白实验室想要我实现什么,这就是 java TestClass 提示错误的原因(实验室想要:描述:将当前播放器设置为播放器和每个cell的状态到state中对应的状态。)

非常感谢你们的帮助! (我现在可以去睡觉了.. :))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 2017-10-02
    相关资源
    最近更新 更多