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]。我做对了吗?

最后,我试图对齐a1a2. 所以我可以得到输出:

ABCDE
A-CD-C

笔记:sop = System.out.print

4

1 回答 1

0

如果我明白你的想法,在使用减量时,你可能试图减少第二个数组的索引使用?如果是这样,它不会那样工作。此外还有数组寻址等问题(Java 索引数组元素从位置 0,而不是位置 1。

无论如何,对于您的问题陈述,您可以尝试:

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 回答