2016-12-03 3 views
0

範囲から整数のユーザ入力を受け取り、それをバイナリに変換し、3x3配列をバイナリで埋める必要があります。唯一の問題は、私のコードは、そのバイナリの最初の3つの数字に依存する出力を与えていることです(つまり、すべての行にわたって010001101 = 010)。ユーザ入力(2進数への整数)で2次元配列を塗りつぶす

import java.util.Scanner; 
public class HW11P02 { 

    public static void main(String[] args) { 
     Scanner in = new Scanner (System.in); 
     System.out.print("Enter a number between 0 and 511: "); 
     int n = in.nextInt(); 


     String binary = Integer.toBinaryString(n); 
     binary = binary.format("%09d", Integer.parseInt(binary)); 
     System.out.println(binary); 

     listArray(binary); 


    }; 

    public static String[][] listArray(String binary) { 
     String[][] array = new String[3][3]; 

     char ch = ' '; 
     String value = ""; 

     for (int i = 0; i < 3; i++) { 
      for (int n = 0; n < 3; n++) { 
       ch = binary.charAt(n); 
       value = Character.toString(ch); 
       array[i][n] = value; 
       System.out.print(array[i][n] + " "); 
      } 
      System.out.println(); 
     } 



     return array; 
    } 
}; 
+0

あなたはする必要はありません場合は、このつもり印刷がバイナリで先頭の0をしないことを覚えている:exは:10:数2つもりもありこれは、2ビット以上を使用する必要がないためです。数字255を入力して、結果として何を得るか再投稿してください。 – someRandomSerbianGuy

+0

@ Slay29私の結果は0 1 1 3行全部で –

+0

通常のintの代わりにlongを使用してみてください。違いはありますか? – someRandomSerbianGuy

答えて

0

これは本当に必要な出力を提供すると思います。

import java.util.Scanner;

パブリッククラスHW11P02 {

public static void main(String[] args) 
{ 
    Scanner in = new Scanner (System.in); 
    System.out.print("Enter a number between 0 and 511: "); 
    int n = in.nextInt(); 

    String binary = Integer.toBinaryString(n); 
    binary = binary.format("%09d", Integer.parseInt(binary)); 
    System.out.println(binary); 

    int result[][]=new int[3][3]; 
    int position=0; 
    for (int i = 0; i < result.length; i++) 
    { 
     for (int j = 0; j < result.length; j++) 
     { 
      result[i][j]=binary.charAt(position++)-'0'; 
      System.out.print(result[i][j]+" "); 
     } 
     System.out.println(); 
    } 


} 

}

関連する問題