2015-05-12 2 views
0

У меня есть этот массив.Как бы объединить и добавить эти два массива символов?

char [] cornStrand = {'G','G','A','G','T','T','C','C','C','A'}; 

У меня также есть этот массив, для которого значения вводятся пользователем, запускающим программу.

char [] bacteriaStrand = new char [5]; 

String strBases = scan.nextLine(); 

    for (int s=0; s <bacteriaStrand.length; s++) 
    { 
     char c = strBases.charAt(s); 
     bacteriaStrand[s]= c ; 
    } 

Второй блок кода по существу вводит значения, введенные пользователем в массив бактерий.

Теперь наступает сложная часть. Мне нужно «сплайсировать» и объединить оба массива. Под этим я имею в виду:

Если первый символ

 char [] bacteriaStrand 

есть А, то я должен вставить

char [] bacteriaStrand 

После первого G в

char [] cornStrand 

Теперь, после того, как я подключу это, я должен поместить то, что я сплайсировал в новый массив, который называется

char [] combinedStrand 

Здесь я смущаюсь. Если кто-то может помочь, пожалуйста, сделайте это! Я с радостью по достоинству оценил бы это!

+0

Что вы пытаетесь? Это очень похоже на домашнюю работу. SO не является сайтом «Пожалуйста, сделайте мою домашнюю работу». Подсказка: сначала создайте новый массив combinedStrand, размер которого будет составлять длину кукурузы + длина бактерий. Скопируйте буквы из кукурузной нити, пока вы не встретите g в первый раз, затем скопируйте буквы из бактерий, а затем продолжайте с остальной кукурузой. – Daniel

+0

@ Daniel Пока это моя домашняя работа (частично), как вы можете видеть, я много делал. Я пробовал много способов, и он не работал, поэтому ТОГДА я обратился к ТАК. Спасибо за ваше предложение, хотя – JoJo

+0

@JoJo - Мы хотим, чтобы вы >> показали нам <<, что работа; т.е. код, который вы написали. Нам было бы просто написать код для вас. Но это контрпродуктивно. Вы должны сами программировать, чтобы учиться. Лучше, если вы покажете нам, что вы написали, чтобы мы могли указать на ваши ошибки или дать вам подсказки о том, как двигаться вперед. –

ответ

0

Может быть, сделать что-то вроде этого:

public char[] combine(char[] bacteriaStrand, char[] cornStrand) { 

     char[] result = new char[bacteriaStrand.length + cornStrand.length]; 

     if (bacteriaStrand[0] == 'A') { 

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

       boolean insertedBacteria = false; 

       if (cornStrand[i] == 'G') { 

        insertedBacteria = true; 
        for (int j = 0; j < bacteriaStrand.length; j++) { 

         result[i + 1 + j] = bacteriaStrand[j]; 

        } 
        if (insertedBacteria) 
         i += bacteriaStrand.length; 

        result[i] = cornStrand[i]; 

       } 

      } 

     } 

     return result; 

    } 
0

Если это единственное правило, это кажется довольно просто сделать.

if (bacteriaStrand[0] == 'A') { 
    int totalLength = cornStrand.length + bacteriaStrand.length; 
    char [] combinedStrand = new char [totalLength]; 
    for(int i=0; i<cornStrand.length; i++){ 
     combinedStrand[i] = cornStrand[i]; //fill in corn until you find the first G 
     if (cornStrand[i] == 'G') { 
      int j = 0; 
      for(; j<bacteriaStrand.length; j++){ 
       combinedStrand[i+j+1] = bacteriaStrand[j]; //fill in bacteria 
      } 
      i++; 
      for(;i<cornStrand.length;i++){ 
       combinedStrand[i+j+1] = cornStrand[i] //fill in the rest of corn 
      } 
     }     
    }//now this loop will break, since you increased i, so you won't get duplicates 
} 
Смежные вопросы