Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建从数字到二进制、字母到矩阵的转换方法_Java - Fatal编程技术网

Java 创建从数字到二进制、字母到矩阵的转换方法

Java 创建从数字到二进制、字母到矩阵的转换方法,java,Java,所以我在写这个程序,它模拟了一个有H和T边的coinflip,现在是创建我的方法的时候了。该程序的主要思想是,用户应该能够输入任意数字b/w 1和511。输入数字后,我的方法应该将它们的数字转换为二进制,0表示正,1表示负 因此,如果用户输入3,我的methods应该转换为000000011,然后我想将其转换为打印一个如下所示的矩阵: HHH HHH HTT 这是到目前为止我的代码,但是我的方法(binaryConverter)是空的。我真的不知道从哪里开始 import java

所以我在写这个程序,它模拟了一个有H和T边的coinflip,现在是创建我的方法的时候了。该程序的主要思想是,用户应该能够输入任意数字b/w 1和511。输入数字后,我的方法应该将它们的数字转换为二进制,0表示正,1表示负

因此,如果用户输入3,我的methods应该转换为000000011,然后我想将其转换为打印一个如下所示的矩阵:

  HHH
  HHH
  HTT
这是到目前为止我的代码,但是我的方法(binaryConverter)是空的。我真的不知道从哪里开始

import java.util.Scanner;
public class Problem8_11 {
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    System.out.print("Enter one number between 0 and 511: ");
    int number = input.nextInt();

    String binaryValue = binaryConverter(number);

    int[][] matrix = new int[3][3];
    int binary = 0;

    for (int i = 0; i < matrix.length; i++) {
            for (int x = 0; x < matrix[i].length; x++) {
            int HeadOrTails = (binaryValue.charAt(binary++) == '0') ? 0 : 1;
                    matrix[x][i] = HeadOrTails;
        }
    }
    for (int i = 0; i < matrix.length; i++) {

        for (int x = 0; x < matrix[i].length; x++) {
            char HorT = (matrix[i][x] == 0) ? 'H' : 'T';
            System.out.print(HorT + "");
        }
        System.out.println(" ");
    }

}
import java.util.Scanner;
公共课问题8_11{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入一个介于0和511之间的数字:”);
int number=input.nextInt();
字符串binaryValue=二进制转换器(数字);
int[][]矩阵=新int[3][3];
int二进制=0;
对于(int i=0;i
您不需要转换为字符串-这是浪费

使用简单的位测试

private boolean test(int n, int bit) {
    return ((1 << bit) & n) != 0;
}

private String test(int n, int bit, String t, String f) {
    return test(n, bit) ? t : f;
}

public void test(String[] args) {
    int n = 3;
    for (int bit = 8; bit >= 0; bit--) {
        System.out.print(test(n, bit, "H", "T"));
    }
}
专用布尔测试(int n,int位){
返回((1=0;位--){
系统输出打印(测试(n,位,“H”,“T”);
}
}
tttttthh


如果您的问题只是如何将int转换为二进制字符串,那么下面的问题已经给出了答案:

当然,您需要附加任何前导零。 因此,您的二进制转换器可以执行以下操作:

String convertToBinaryString(int i){
    String bString = Integer.toBinaryString(i);

    while(bString.length() < 12){
        bString = "0" + bString;
   }

   return bString ;
}
字符串转换为二进制字符串(int i){
字符串bString=Integer.toBinaryString(i);
while(bString.length()<12){
bString=“0”+bString;
}
返回键;
}

看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只在海报已经尝试自己解决问题时才提供帮助。演示这一努力的一个好方法是将您迄今为止编写的代码包括在内,例如输入(如果有),预期输出和实际获得的输出(控制台输出、回溯等)。你提供的细节越多,你可能会收到越多的答案。请检查和。为什么这篇文章被标记为
javascript
?我不知道该如何开始,这就是我发表这篇文章的原因。我真的不知道从哪里开始。你不必为我写,我也没有要求任何人为我写。我询问了一些建议,关于到哪里写tart.感谢您尝试了这个方法。您不需要使用字符串,只需测试数字的底部位(
x&1!=0
)的
0
/
1
H
/
t
,然后使用右移(
x=x>>1
)移到下一位。这里已经回答了:所以我尝试添加它,但现在我似乎在代码中遇到了错误。很抱歉,我在bString.length()中错过了()。现在更正了。@tcann99您可以用
String binaryValue=binaryConverter(number);
替换代码中的
String binaryValue=Integer.toBinaryString(i);while(bString.length()<12){bString=“0”+bString;}