0

これが私の開始コードです。

static char[] a1 = {'a', 'b', 'c', 'd', 'e'};
static char[] a2 = {'a', 'c', 'd', 'c'};

        for (int i = 1; i <= 5 ; i++) {

            if( a1[i] == a2[i] ){
                sop(a2[i] + "");
            }else{

                if( a1[i] > a2[i] ){
                    sop("");
                }else if( a1[i] < a2[i] ){
                    sop("-");
                    a2[i] = a2[i-1];
                }

            }
        }

線をどのようにデクリメントするのか知りたいのですがa2[i] = a2[i-1]。私はそれを正しくしましたか?

結局、私は整列しようとしていa1ますa2。だから私は出力を得ることができました:

ABCDE
A-CD-C

ノート:sop = System.out.print

4

1 に答える 1

0

私があなたの考えを理解した場合、デクリメントを使用する際に、2番目の配列だけのインデックスの使用をデクリメントしようとしていたのでしょうか? もしそうなら、それはそのようには機能しません。さらに、配列のアドレス指定などの問題があります (Java インデックスは、位置 1 ではなく位置 0 から配列要素をインデックスします。

とにかく、問題のステートメントについては、次を試すことができます。

static char[] a1 = {'a', 'b', 'c', 'd', 'e'};
static char[] a2 = {'a', 'c', 'd', 'c'};

for(int k=0;k<a1.length;k++)
    System.out.print(a1[k]);
System.out.println();

for (int i = 0, j=0 ; i<a1.length && j<a2.length ; i++, j++)
{
    if( a1[i] == a2[j] )
        System.out.print(a2[j]);
    else if( a1[i] < a2[j] )
    {
        System.out.print("-");
        j--;
    }

}
于 2013-03-03T03:32:00.143 に答える