1

を使用compareToする場合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()funcB()は戻り型を持っているので、三元構文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()
{
}

1行で条件を使用する場合は、関数を変更する必要があります。

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ません。また、関数は戻り型である必要があります。そうでない場合、三項演算で使用できません。intlongboolean

   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 に答える