Joh*_*ith 8 java static non-static
错误来自此行BoardState addme = new BoardState();
由于某种原因,它所指向的非静态变量是"新的".我不清楚如何修复此错误,因为新的并不意味着变量,而不是.
通过stackoverflow记录查看此错误通常来自非静态方法,该方法通常通过使方法静态或完全绕过该方法来解决.Ť
下面的代码用于引用此语句之前和之后发生的事情.
public class IntelligentTicTacToe extends TicTacToe {
public class BoardState{
public String TTTState;
public int[][] defensiveOppsArray;
public int[][] offensiveOppsArray;
public String str;
public int cnt;
}
public static ArrayList<BoardState> memory = new ArrayList<BoardState>();
public static boolean makeMove(){
char[] oArray = new char[TicTacToeArray.length];
int[][] defensiveOppsArray = new int[TicTacToeArray.length][TicTacToeArray.length];
int[][] offensiveOppsArray = new int[TicTacToeArray.length][TicTacToeArray.length];
int[][] sumOppsArray = new int[TicTacToeArray.length][TicTacToeArray.length];
//converts our Array into a String
String x = convertTTTArrayToString();
//Goes through the conditions to see if we have it in memory or if we must go through all the conditions
boolean matchFound = false;
for(int i=0; i < memory.size(); i++){
BoardState element = memory.get(i);
if(element.str.equals(x)){
System.out.println("Match Found");
matchFound = true;
}}
if(!matchFound){
BoardState addme = new BoardState();
addme.str = x;
addme.cnt = 1;
memory.add(addme);
}
Run Code Online (Sandbox Code Playgroud)
} ....
Ale*_*ula 18
它不起作用的原因是因为你的类BoardState
是一个内部的,非静态的类IntelligentTicTacToe
.这意味着在引用它时,您将引用该类的实例; 静态上下文中不提供该实例.
一种解决方案是将该类声明为:
public static class BoardState {
Run Code Online (Sandbox Code Playgroud)
你可以阅读更多的内部类在这里.
归档时间: |
|
查看次数: |
29718 次 |
最近记录: |