-1

一緒に 40 要素の長さである 2 つの配列を追加するプログラムを書いています。add() メソッドを HugeInteger (整数に変更できない) として保持する必要があるため、2 つの整数の合計を返そうとすると、「HugeInteger@77e1ee5d」が返されます。誰かがこれが何を意味するのかを教えてくれませんか。また、どうすれば修正できるか教えてください。ありがとうございました

パブリッククラスのHugeInteger {

private int[] integer ;

public HugeInteger(int num[]){
    integer =new int [40];

    for(int x=1; x<=39; x++){           
        integer[x]= num[x];
    }

}

public void parse(String s){

    for(int i=0; i<=s.length(); i++){

        integer[i]=Integer.parseInt(s.substring(i,i+1));
    }

}

public HugeInteger add(HugeInteger a1){
    HugeInteger sum = new HugeInteger(integer);

    int cary=0;
      for (int i=39; i>=0; i--){
          sum.integer[i]=integer[i]+a1.integer[i]+cary;
          if(sum.integer[i]>=10){
              cary=1;
              sum.integer[i]-=10;
          }else{
              cary=0;
          }
      }
      return sum;   
}}

//これは私のテストプログラムです

public class HugeIntegerTest {

public static void main(String[] args) {


    int []num={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

    HugeInteger hi= new HugeInteger(num);



    System.out.println("Addition: "+hi.add(hi));


}

}

4

2 に答える 2

2

正しく表示するには、独自のバージョンのtoString()forを作成する必要があります。HugeInteger

于 2013-09-01T18:10:08.117 に答える
2

これがデフォルトのObject.toString()メソッドの出力です。toString自分でオーバーライドして、より良い実装を提供する必要があります。例:

@Override
public String toString() {
    StringBuilder builder = new StringBuilder(integer.length);
    for(int digit : integer) {
        builder.append(digit);
    }
    return builder.toString();
}

この実装は先頭のゼロを削除しないことに注意してください。つまり、単に "123" ではなく "0000...000123" を出力します。これは、読者、erm、プログラマーの演習として残されています。;-)

もう 1 つのヒント: コンストラクターでは、ループは から開始する必要がありますi=0。そうしないと、最上位桁 ( ) は常にゼロになります。たとえば、テスト プログラムは 10 39integer[0]ではなく 0 を表す HugeInteger を返します。

于 2013-09-01T18:10:13.117 に答える