2017-02-01 6 views
0

実際には、コード全体の目的は、入力値(0または1)を配列に入れ、入力された配列を6つの連続した0でチェックしてから、 0の。私はこのブロックが見つかった変数の値が6増分する方法

入力された配列に6つの連続する0がなくても実行されます。次に、問題を確認します。私は、ここにこの文

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 

私は問題を発見しました。私の質問は次のとおりです。 -

「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刻みあるそれはあるあなたが入力した最後の数字をチェック最初の10個の値の配列bits0(標準値)で埋められています。プログラムとして それは例えば、位置n - 5に到達したときにそれを停止すべき位置10

から始まる6 0を見つけ、働いている:

... 
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 ... 

このコードは:

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

I = 9ビットであるため、それはビット[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に設定します。代わりに使用した場合:それはあなたがSystem.inのためにスキャンしたものを後に0のフルですので

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

bitsは、長さ40のint配列です。

i = nのとき-1、あなたは0で、入力後、唯一の10位の長さであるため、すべての次の1が6

関連する問題