Chr*_*ier 0 java arrays static
我正在为课堂建立一个词汇/ syntex分析器.我遇到的问题是当我尝试从除了main之外的方法访问我的静态变量"lexems"或"tokens"时它们是NULL.当我在main中使用它们(例如lex.printList方法)时,它们很好并且填充了数据.
这是怎么回事???
import java.io.IOException;
import java.util.ArrayList;
public class SyntaxAnalyzer {
public static int pos = 0;
public static ArrayList<String> lexems = new ArrayList<String>();
public static ArrayList<String> tokens = new ArrayList<String>();
public static String nextToken;
public static void main(String[] args) throws IOException {
LexicalAnalysis lex = new LexicalAnalysis();
lex.getFile();
lex.parseText();
ArrayList<String> lexems = lex.getLexems();
lex.printList(lexems);
ArrayList<String> tokens = lex.getTokens();
lex.printList(tokens);
//expr();
lex();
}
static void lex(){
//String lexem = lexems.get(pos);
//System.out.println(lexem);
nextToken = tokens.get(pos);
pos++;
}
}
Run Code Online (Sandbox Code Playgroud)
您使用本地对象覆盖lexems对象,因此它不是您在main函数内修改的静态变量.
要对静态操作,你应该做
/*NOTHING HERE!!*/ lexems = lex.getLexems();
lex.printList(lexems);
...
Run Code Online (Sandbox Code Playgroud)
令牌出现同样的问题
/*NOTHING HERE!!*/ tokens = lex.getTokens();
lex.printList(tokens);
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |