2017-12-25 4 views
0

항상 짝수 카운트가있는 목록이 하나 있다고 가정합니다. 지금은 내가 같은를 달성하기 위해 루프를 중첩으로하려고했으나 예상 출력을 얻을하지 않았다 목록 요소를 Java의 다른 그룹과 분리합니다.

1) First element (1st element) with one index (EX: 1) 
2) Next two elements with same index (Ex: 2nd, 3rd element with index 2, 
              4th and 5th element with index 3) 
3) Last element(6th element) with index 4 

, 아래의 조건을 다른 그룹의 인덱스 목록을 분리하고 싶습니다.

도움을 주시면 감사하겠습니다. 샘플 입력 :

[2,3,53,52,33,12,44,66] 

샘플 출력 : 내가 바로 당신의 질문을 이해하면이 제대로 작동합니다

2 - 1 
3 - 2 
53 - 2 
52 - 3 
33 - 3 
12 - 4 
44 - 4 
66 - 5 
+0

당신이 코드는 출발점이 있다는 사실을. 귀하의 방법을 여기에 게시하십시오. 귀하가 가지고있는 것을 어디서 볼 수 있으며, 어디서 잘못되었는지 확인할 수 있습니다. – Makoto

+1

목록에있는 요소를 범주화하려는 것 같습니다. 목록 요소가 항상 고유 할 경우 목록 요소가 키이고 사전 값이 그룹/범주 번호 인 사전을 사용할 수 있습니다 – Marathon55

+1

@Vinod - 답변을 추가했지만 왜 부정적인지 알지 못합니다 작업 코드에 투표하십시오. 확인하십시오! –

답변

1

두 개의 추가 변수 z와 count를 사용하여 구현했습니다. 카운트 % 2이 0 인 경우에만 만 z를 증가시키고, 마지막으로 크기 -1이 i와 동일한 지 확인해야합니다 변수는 세 번째 조건입니다. i는 I 카운터 값 I가 입력리스트를 시뮬레이션 한 다음 코드를보십시오 0

이다 있으면를에 또한 제 조건 I는 먼저 인덱스 및 z 변수 값에서의 ArrayList 값을 인쇄하고 그 I 수동으로 추가했습니다! 시험에 대한 링크를 사용하십시오 : http://rextester.com/ESYF23501

import javafx.collections.ArrayChangeListener; 
import java.util.ArrayList; 
import java.util.Scanner; 

public class Main { 



    public static void main(String[] args) { 
     ArrayList<Integer> a= new ArrayList<Integer>(); 
     a.add(2); 
     a.add(3); 
     a.add(53); 
     a.add(52); 
     a.add(33); 
     a.add(12); 
     a.add(44); 
     a.add(66); 
     int i = 0; 
     int z = 2; 
     //Count to group the middle number by checking its value with respect to mod 2 
     int count = 0; 
     for(i = 0; i < a.size(); i++) 
     { 

      if(i == 0) 
      { 
       z = i+1; 
       System.out.println(""+a.get(i)+" " + "" +z+""); 

      } 
      if(i > 0 && i != (a.size() -1)) 
      { 
       //Increament z if the count is even so that we print the group for two times 
       if(count%2 == 0) 
       { 
        z++; 
       } 

       System.out.println(""+a.get(i)+"" +" "+ ""+z+""); 
       count ++; 
      } 
      if(i == a.size() -1) 
      { 
       z++; 
       System.out.println(""+a.get(i)+"" +" "+ ""+z+""); 
      } 
     } 
    } 
} 
+0

나는 이것이 -1 인 이유를 모르지만, 코드 작동을 확인하십시오! 그리고 질문에 따라 정확합니다! –

0

: 그것은 첫 번째 숫자 1을 인쇄하여 시작

System.out.println(elements.get(0) + " - 1"); // Prints the first number, which has the value of 1 
int value = 2; // Value corresponding to the number 
for (int i = 1; i < elements.size(); i++) { // Loops through the list starting at second element (index of 1) 
    System.out.println(elements.get(i) + " - " + value); // Prints the number and the value 
    if (i % 2 == 0) value++; // Increases the value every two loops 
} 

, 당신이 말했듯이 항상 서로 일치합니다. 그런 다음 두 번째 숫자 (i = 1)에서 시작하는 숫자 목록을 반복하고 각 숫자와 해당 값을 인쇄합니다. 이 값은 루프 수가 2로 나눌 수있을 때마다 두 개의 루프마다 증가합니다 (i % 2).