1

如果我使用compareToa BigInteger,我如何从结果中选择调用哪个函数?(-1 = funcA,+1 = funcB,0 = 无功能)。

特别是:这有什么问题?

doCompare() {
   BigInteger x = new BigInteger(5);
   BigInteger y = new BigInteger(10);

   //syntax error token "<", invalid assignment operator
   x.compareTo(y) < 0 ? funcA() : funcB();
}

void funcA();
void funcB();
4

3 回答 3

6

因为funcA()andfuncB()有返回类型void,所以不能使用三元语法。不过,您可以将其重写为常规if语句:

if (x.compareTo(y) < 0) {
    funcA();
} else {
    funcB();
}
于 2012-10-18T18:54:09.133 回答
0

用这个,

public void doCompare() { BigInteger x = new BigInteger("5"); BigInteger y = new BigInteger("10");

    //syntax error token "<", invalid assignment operator
    if(x.compareTo(y) < 0 )
    {
        funcA();
    }
    else
    {
        funcB();
    }
}

public void funcA()
{
}

public void funcB()
{
}

如果要在一行中使用条件,则需要修改函数:

public void doCompare()
{
    BigInteger x = new BigInteger("5");
    BigInteger y = new BigInteger("10");

    boolean a = (x.compareTo(y) < 0 ) ? funcA() : funcB();

}

public boolean funcA()
{
    return false;
}

public boolean funcB()
{
    return true;
}
于 2012-10-18T18:59:26.403 回答
0

首先,您BigInteger()错误地使用了构造函数,它String不需要intor long。而且你的函数必须有boolean返回类型,否则你不能在三元运算中使用它们。

   void doCompare() 
    {
       BigInteger x = new BigInteger("5");
       BigInteger y = new BigInteger("10");

       boolean result = x.compareTo(y) < 0 ? funcA() : funcB();
    }

    boolean funcA(){return true;};
    boolean funcB(){return false;};
于 2012-10-18T18:59:51.817 回答