如何根据if语句声明具有不同值的变量



我是Java初学者,我正在使用类继承。我定义了一个抽象类Taula2d和两个子类Taula2Dversio1和Taula2Dversio2。我的问题的简短版本:我可以像这样定义一个可变的tau。

Taula2DVersio1 Tau = new Taula2DVersio1(al,am);

如果我定义了这样的变量tau(类取决于条件(

 if (!(Versio==1)) {
        Taula2DVersio2 Tau = new Taula2DVersio2(al,am); // alçada,amplada
    }
    else  {
                Taula2DVersio1 Tau = new Taula2DVersio1(al,am);
    }

然后,下一个对变量tau的引用会导致汇编错误:"找不到符号"

哪种正确的方法?

您可能是在if else块之外引用此变量。如果您这样定义它,它仅在此块中可用,如果要在此块之前或之后使用它。

您应该在if else块之外定义此变量,并且无处不在:

 Taula2D Tau;
 if (!(Versio==1)) {
    Tau = new Taula2DVersio2(al,am); // alçada,amplada
 } else  {
    Tau = new Taula2DVersio1(al,am);
 }

喜欢T.J.Crowder在评论中提到,或者,您可以使用条件操作员,在这种情况下,这与if else相当于:

Taula2D Tau = Versio == 1 ? new Taula2DVersio1(al,am) : new Taula2DVersio2(al,am);

ps:Java中的编码约定假定带有小字母的启动变量名称。

最新更新