【问题标题】:Creating a method to transfer from a number, to binary, to a letter, to a matrix创建一种从数字转换为二进制、转换为字母、转换为矩阵的方法
【发布时间】:2018-08-01 08:02:44
【问题描述】:

所以我正在编写这个程序来模拟 H 面和 T 面的硬币翻转,现在是时候创建我的方法了。该程序背后的主要思想是用户应该能够输入任何数字 b/w 1 和 511。输入数字后,我的方法应该将他们的数字转换为二进制,0 表示正面,1 表示反面。

所以如果用户输入 3,我的方法应该转换为 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(" ");
    }

}

【问题讨论】:

  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出以及您实际获得的输出(控制台输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to Ask
  • 为什么这个标签是javascript
  • 我不知道如何开始,这就是我发帖的原因。我真的不知道从哪里开始。你不必为我写,我也没有要求任何人为我写。我要求建议,从哪里开始。感谢您的尝试。
  • 您不需要使用字符串,只需为0/1H/T 测试号码的底部位(x &amp; 1 != 0)并使用右移 (x = x &gt;&gt; 1) 移动到下一位。
  • 这里已经回答了:stackoverflow.com/questions/2406432/…

标签: java


【解决方案1】:

你不需要转换成字符串——那很浪费。

使用简单的位测试。

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"));
    }
}

TTTTTTTHH

【讨论】:

    【解决方案2】:

    如果您的问题只是关于如何将 int 转换为二进制字符串,则已在以下问题中回答: Converting an int to a binary string representation in Java?

    您当然需要附加任何前导零。 所以你的二进制转换器可以做如下的事情:

    String convertToBinaryString(int i){
        String bString = Integer.toBinaryString(i);
    
        while(bString.length() < 12){
            bString = "0" + bString;
       }
    
       return bString ;
    }
    

    【讨论】:

    • 所以我尝试添加它,但现在我似乎收到了代码错误。
    • 抱歉,我在 bString.length() 中遗漏了 ()。现已更正。
    • @tcann99 您可以将代码中的String binaryValue = binaryConverter(number); 替换为String binaryValue = Integer.toBinaryString(i); while(bString.length() &lt; 12){ bString = "0" + bString; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2015-06-01
    • 2020-04-21
    • 1970-01-01
    • 2022-11-29
    • 2022-01-23
    • 2019-05-02
    相关资源
    最近更新 更多