2017-10-01 5 views
0

私は現在、hwの割り当てを完了しようとしていますが、この時点を過ぎて取得する方法についても正直に混乱しています。ユーザー入力ビット列に基づいて1と0の配列を埋め込む方法

私は、1と0からなるビットストリング長が24であることをユーザーに尋ねるはずです。私はちょうど1つの値で各単一のアレイスロットを満たす方法を理解しているようには思えません。 1と0の24ビットの文字列を与えた後、私はその24ビットの文字列をRGBスケールの値を持つ0〜255の数を表す3つの別々の8ビット整数コンポーネントに変換すると仮定しています。

たとえば、私はビット列 "111111110000000000000000"をとります。これは "111111111"を255とし、 "00000000"は緑色を0とし、00000000を青色とします。純粋な赤を表す。

私もこれを起動するために何をすべきかについて非常にこだわっているが、それは私は正直わからない3つの成分にビット列を分割することになると私はその何かこの

import java.util.Scanner; 
public class Test { 
     public static void main(String args[]){ 
      String[] bitString; 
      bitString = new String[24]; 

      Scanner consuleInput = new Scanner(System.in); 
      System.out.println("what is your input bit string?"); 
      for(int i=0;i < bitstring.length; i++) { 
       bitString = consuleInput.nextLine(); 
       // this was my rough idea on how to go through the array at everyone spot 
       // and fill in a 0 or 1 depending on what the giving bitString is 
      } 

のように思うだろう。私はあなたのようなものを[0]〜[7]のビット列配列にし、それをredValue [8]〜[15]に緑、[16]〜[23]を青に割り当てます。これら三つを分割して、私は私のビット列から1と0のその文字列の整数値を与えるだろう

int re = Integer.parseInt(redValue, 2); 

のようなものを使用する[0]ビット列に[7]。私はそれをどのように実装するのか全く分かりません。

答えて

1

元のコードでは、forループ状態の入力ミスがあります。bitstringbitStringである必要があります。配列全体にStringを割り当てようとしています(String[])。特定のインデックスで配列にアクセスしてから、その配列に値を割り当てる必要があります。

for (int i = 0; i < bitString.length; i++) { 
    bitString[i] = consuleInput.nextLine(); 
} 

ただし、私はより良いアプローチを提案します。一度に入力を1ビットずつ取得する代わりに、文字列全体を取得し、subtring()を使用して8ビットごとに10進数に変換します。必要に応じて、文字列の長さが24文字でないか、バイナリ値でない場合でも、エラーを出力するための検証を実装できます。

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    System.out.println("what is your input bit string?"); 
    String input = scanner.nextLine(); 

    int[] rgb = { 
     Integer.parseInt(input.substring(0, 8), 2), 
     Integer.parseInt(input.substring(8, 16), 2), 
     Integer.parseInt(input.substring(16, 24), 2) 
    }; 
} 
関連する問題