构造函数似乎没有将值放入表达式变量中。如果是这样,它不会正确地将它传递给tokenizer。当我调试它似乎只是传递构造函数内的行。我理解我编写的代码的方式是在main()中调用构造函数,字符串应该存储在解析器内的表达式变量中,然后表达式应该传递给Tokenizer(),但表达式变量在传递时为null。我需要将字符串存储在表达式变量中,然后再传递给Tokenizer()。
public class Parser {
String expression;
Tokenizer tokenizer = new Tokenizer(expression);
Parser(String e) {
this.expression = e;
}
}
public static void main(String[] args) {
// TODO code application logic here
Parser parser = new Parser("3+5");
}
答案 0 :(得分:5)
在初始化对象期间,首先初始化字段。所以在字段中
String expression;
Tokenizer tokenizer = new Tokenizer(expression);
作为expression
构造函数的参数传递的Tokenizer
的值实际上是默认值null
。
在Tokenizer
正确/完全初始化后,您需要初始化expression
字段,即。在你的类的构造函数中。
Parser(String e) {
this.expression = e;
this.tokenizer = new Tokenizer(expression /* or e */);
}
答案 1 :(得分:3)
Tokenizer tokenizer = new Tokenizer(expression); //这是问题。
您正在使用Null表达式创建Tokenizer
public class Parser {
String expression;
Tokenizer tokenizer =null;
Parser(String e) {
this.expression = e;
tokenizer = new Tokenizer(expression);
}
}
public static void main(String[] args) {
// TODO code application logic here
Parser parser = new Parser("3+5");
}