gpt4 book ai didi

java - 不能从静态上下文中引用的非静态变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:09 26 4
gpt4 key购买 nike

错误来自这一行 BoardState addme = new BoardState();

由于某种原因,它指向的非静态变量是“新的”。我不清楚如何修复此错误,因为 new 并不意味着是一个变量,也不是。

查看 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);

}

}....

最佳答案

它不起作用的原因是因为您的类 BoardStateIntelligentTicTacToe 内部的非静态类。这意味着当引用它时,您将引用该类的一个实例;该实例在静态上下文中不可用。

一个解决方案是将该类声明为:

public static class BoardState {

您可以阅读有关内部类的更多信息 here .

关于java - 不能从静态上下文中引用的非静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com