2013-03-03 3 views
0

Это мой код для начала.Как уменьшить массив в Java?

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

+0

Что ваш первый язык Что я? может понять, что вы меняете только одно место в массиве, вы хотите изменить все? вам понадобится секунда для изменения других значений. –

+0

@ RicardoOrtegaMagaña Вы имеете в виду язык программирования? Я пытаюсь уменьшить массив a2 –

+0

Для примера, пожалуйста, опубликуйте вывод, который хотите получить. Если сами массивы должны измениться, пожалуйста, покажите нам, как. –

ответ

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--; 
    } 

} 
Смежные вопросы