我的构造函数不起作用任何人都可以帮我解决问题吗?

时间:2013-10-01 01:23:30

标签: java

构造函数似乎没有将值放入表达式变量中。如果是这样,它不会正确地将它传递给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");
}

2 个答案:

答案 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");
}