2015-12-21 7 views
1

[A, B, C, D, E, F]Прочитанные группы из N смежных элементов из массива

Мне нужно получить смежные значения из массива сверху.

соседнему Количество может варьироваться сказать

если adjcnt = 2

Тогда я должен получить, как это

tuple 1 = A,B 
tuple 2 = C,D 
tuple 3 = E,F 

Если adjcnt = 3

tuple 1 = A,B,c 
tuple 2 = D,E,F 

Мой код

for (int i = 0; i < arr.length; i++) { 
if(i < adjcnt){ 
    if(i==0){ 
    csv = arr[i]; 
    } 
    else{ 
     csv += ","+arr[i]; 
    } 
} 
System.out.println("csv---> "+csv); 
} 

Напечатано только 2 элемента. Мне нужно зациклиться до тех пор, пока мой arr не будет

Некоторые, где моя логика неправильная. Пожалуйста КОНСУЛЬТАЦИЯ

+2

Почему 'tuple 1.5 = B, C' не является решением, если' adjcnt = 2'? –

+0

Простым императивным методом, который легко понять, является внутренняя переменная цикла с дискретной переменной. Тогда внешний цикл равен «i = 0; i user2864740

+0

Если adjctnt 4 или 5, то что вы хотите? –

ответ

2

Измените этот код: -

for (int i = 0; i < arr.length; i++) { 
if(i < adjcnt){ 
    if(i==0){ 
    csv = arr[i]; 
    } 
    else{ 
     csv += ","+arr[i]; 
    } 
} 
System.out.println("csv---> "+csv); 
} 

к следующему

for (int i = 0; i < arr.length; i++) { 
if((i % adjcnt) < adjcnt){ 
    if((i % adjcnt)==0){ 
    csv = arr[i]; 
    } 
    else{ 
     csv += ","+arr[i]; 
    } 
} 
System.out.println("csv---> "+csv); 
} 
+0

Да, вы правы,% wwill отлично работает. –

0
#include<stdio.h> 

int main() 
{ 
    int arr[6] = {1,2,3,4,5,6}; 
    int i = 0; 
    int adjacent = 2; 

    for(i=0;i<6;i++) 
    { 
     if(i% adjacent == 0) { 
      printf("\n"); 
     } 
     printf("%d",arr[i]); 
    } 
    return 0; 
} 
+0

Ну, его вопрос java, но все же применим :) – HRgiger

0

Вы можете попробовать этот способ тоже.

int adjcnt = 3; 
String[] arr = {"A", "B", "C", "D", "E", "F"}; 
for(int i=0; i< arr.length; i= i + adjcnt){ 
    System.out.println(Arrays.toString(Arrays.copyOfRange(arr, i, i+adjcnt))); 
    //here it will copy your original array between given indexes. 
} 

вне положенный:

[A, B, C] 
[D, E, F] 
0

Unmesha, вы можете использовать следующий код для вашего ожидаемого результата

public class Adjacent { 
    public static void main(String args[]) { 
     char[] test = { 'a', 'b', 'c', 'd', 'e', 'f' }; 
     int adjcnt = 3; 
     StringBuilder csv = new StringBuilder(); 
     int tuplecount = 1; 
     for (int i = 0; i < test.length; i++) { 
      if (i % adjcnt == 0 || i == 0) { 
       if (i != 0) 
        csv.append("\n"); 
       csv.append("tuple "); 
       csv.append(tuplecount); 
       csv.append("="); 
       csv.append(test[i]); 
      } else { 
       csv.append(","); 
       csv.append(test[i]); 
      } 

     } 
     System.out.println(csv.toString()); 
    } 
} 

Пожалуйста, обновите меня, если этот код работает для вас

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