2017-02-01 1 views
0

실제로 전체 코드의 목적은 배열에서 입력 값 (0 또는 1)을 얻은 다음 6 개의 연속 0에 대해 입력 된 배열을 확인하고 각 6 개의 연속 된 후 '1'을 삽입하는 것입니다. 0이야. 이 블록을 찾았습니다변수 j의 값이 6으로 증가하는 방법

if(j>5){ 
     shift(i+6); 
     bits[i+6] = 1; 
     count+=1; 
     System.out.println(count); 
} 

입력 된 배열에 6 개의 연속 된 0이 없더라도 실행됩니다. 그런 다음 문제를 확인하십시오. I는 여기 문

System.out.println("ABHINAV " + j); 

추가 출력 : - (6) 따라서 '가'블록은 입력되는 변수 'J'단위 -

Entered Bits are: 
1 
0 
1 
0 
1 
0 
1 
0 
1 
0 
ABHINAV 0 
ABHINAV 1 
ABHINAV 0 
ABHINAV 1 
ABHINAV 0 
ABHINAV 1 
ABHINAV 0 
ABHINAV 1 
ABHINAV 0 
ABHINAV 6 

I 문제점을 발견했다. 내 질문 : -

'j'가 6으로 증가하는 방법 (출력 스냅의 마지막 줄을 볼 수 있음).

이 문제를 해결할 수있는 방법. 내가 뭘 잘못하고있어. 여기

class Stuff{ 
    public static final int LENGTH=6;     
    public int count=0;    
    int n; 
    public int bits[] = new int[40]; 
    Scanner inputs = new Scanner(System.in); 
    Stuff(int x){ 
     n=x; 
    } 
    public void input(){ 
     for(int i=0 ; i<n ; i++){ 
      bits[i] = inputs.nextInt(); 
     } 
    } 
    public void len_check(){ 
     int j=0; 
     for(int i = 0 ; i< n ; i++){ 
       j=0; 
       while(bits[i+j] == 0 && j<LENGTH){ 
        j+=1; 
       } 
       System.out.println("ABHINAV " + j); 
       if(j>5){ 
        shift(i+6); 
        bits[i+6] = 1; 
        count+=1; 
        System.out.println(count); 
       } 
     } 
    } 
    public void shift(int u){ 
     for(int i=n ; i>= u ;i--){ 
      bits[i+1] = bits[i]; 
     } 
    } 
    public void display(){ 
     for(int i=0 ; i<n+count ; i++){ 
      System.out.println(" " + bits[i]); 
     } 
    } 
} 

class Problem{ 
    public static void main(String args[]){ 
     int n; 
     Scanner inputs = new Scanner(System.in); 
     System.out.println("\nEnter bit stream length"); 
     n = inputs.nextInt(); 
     Stuff stuff = new Stuff(n); 
     System.out.println("Now Enter the bits: "); 
     stuff.input();     // Enter the bit stream 
     System.out.println("Entered Bits are: "); 
     stuff.display();  
     stuff.len_check(); 
     System.out.println("Altered Bits are: "); 
     stuff.display(); 
    } 
} 
+2

텍스트로 ** 출력 ** 아닌 이미지 –

+2

을 포함하세요 이미 해결 한 문제에 대해서는 말하지 마십시오. ** 진짜 ** 문제에 집중하십시오. 왜 우리는 스스로 해결 한 문제에 대해 읽는 데 시간을 낭비해야합니까? – GhostCat

+0

@GhostCat 문제가 해결되지 않았습니다. 나는 그 질문을 굵은 글씨로 언급했다. –

답변

1

행 0이므로 J 단위가되는 입력 마지막 자리를 확인하면, 이후 첫 번째 값인 배열 bits0 (표준 값)으로 채워집니다. 이 위치에서 시작 6 0을 찾는 프로그램으로 작동하고 10

예를 들어 위치 n - 5에 도달 할 때 중지해야합니다

... 
int j = 0; 
for (int i = 0 ; i< n-5 ; i++) { 
    j = 0; 
... 
1

비트 변수는 길이 (40)에 의해 인스턴스화 된 전체 코드

public int bits[] = new int[40]; 

이 때문에, 비트 []의 길이 (40)와 제로의 배열시킨 후 그

처음 10 개의 요소가 입력으로 대체되었습니다.

index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 
value 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ... 

이 코드 : 때문에 비트 [9] 비트

while(bits[i+j] == 0 && j<LENGTH){ 
    j+=1; 
} 

난 = 9가 J 6 배 증가 [14]이다 0

0
for(int i = 0 ; i< n ; i++){ 
     j=0; 
     while(bits[i+j] == 0 && j<LENGTH){ 
      j+=1; 
     } 
여기서 배열이다

그러면 j가 바로 6로 설정됩니다.

 if(bits[i+j] == 0 && j<LENGTH){ 
      j+=1; 
    } 
1

bits 그래서 당신이 System.in 스캔 한 내용을 이후 0의 전체의 길이 (40)의 int 배열은 다음과 같습니다 아닌 경우에 사용합니다.

난 = N-1을 0과 모든 다음의 하나가 제 입력이 10 자리 길이이기 때문이다