3

要件

整数算術計算機をモデル化し、以下を含む既存のクラス ICalculator が利用可能であると仮定します。

  • 電卓の現在の int 値を格納し、任意のサブクラスからアクセスおよび変更できるインスタンス変数 currentValue。

  • メソッド add、sub、mul、および div

    ICalculator の各メソッドは int 引数を受け取り、その操作を currentValue に適用して、currentValue の新しい値を返します。したがって、currentValue の値が 8 で、sub(6) が呼び出された場合、currentValue の値は 2 になり、2 が返されます。

したがって、ICalculator に基づいてサブクラス ICalculator2 の定義を記述します。クラス ICalculator2 には、引数を受け取らない 1 つの追加メソッド negate があります。ネゲートの効果は、currentValue の符号を反転することです。たとえば、currentValue が 0 の場合は変化なし、-22 の場合は 22 になり、100 の場合は -100 になります。さらに、negate は currentValue の新しい値を返します。

ソースコード

public class ICalculator2 extends ICalculator {
public int negate() { 
int val = add(0);      
if (val == -22) return val * -1;   
else if (val == 100) return val * -1;   
else return 0;}}

備考:

  • コードの実行中にエラーが発生しました

その他のヒント:

  • 100 以外の数値を使用することもできます

  • 22 以外の数値を使用することもできます

  • 本当に使用しますか: val

ヒント:

  • 以下を使用するとよいでしょう: <
  • 使用してもよろしいですか: =
4

6 に答える 6

17

これらの奇妙な計算を行う必要はありませんでした。代わりにこれを試してください:

public class ICalculator2 extends ICalculator {
    public int negate() { 
        return (currentValue = -currentValue);
    }
}
于 2012-10-26T06:53:38.083 に答える
0

従来のインターフェイスであるべきものを拡張しようとしていることに気付きました。それはうまくいきません。インターフェイスを実装します。

于 2016-07-08T11:14:49.067 に答える
0

与えられた数字は一例です。他の数値を使用した真理値表があった場合、この例は失敗します。そのため、コードに問題がありました。currentValue が 0 でない場合に何が起こるかを示すコードを使用する必要があります。

以下を確認してください。

    public class ICalculator2 extends ICalculator {
        public int negate() {
          if (currentValue != 0) {
            return currentValue * -1;}
          else {
            return 0; 
            }
        }
    }
于 2013-02-27T01:57:50.423 に答える
0

この問題を解決するのに役立つので、試してみてください

        int i = -22;
        i = i*-1;

        System.out.println(i);
            return i;
于 2012-10-26T06:55:59.680 に答える
-1

Dude you've got this all wrong.

public class ICalculator2 extends ICalculator{

public int negate(){
    int val =mul(-1);
    return val;}}

you see? -22 and 100 are examples, they don't matter. The point is just that you need to negate whatever it is.

于 2013-04-02T22:26:40.347 に答える