Java 将十进制值转换为二进制值时出现问题

Java 将十进制值转换为二进制值时出现问题,java,Java,我正在制作一个程序,将十进制值转换成二进制值,反之亦然。我已经知道了如何将二进制转换成十进制,但是我在十进制转换成二进制时遇到了麻烦。我见过很多关于如何做的源代码,但大多数都涉及到使用数组。我不能使用数组,因为此程序有GUI,JLabel无法打印数组。我发现了一个代码,它适用于某些数字,但不适用于其他数字。代码如下: public void convertBinary (int decimal) { String binary = "";

我正在制作一个程序,将十进制值转换成二进制值,反之亦然。我已经知道了如何将二进制转换成十进制,但是我在十进制转换成二进制时遇到了麻烦。我见过很多关于如何做的源代码,但大多数都涉及到使用数组。我不能使用数组,因为此程序有GUI,JLabel无法打印数组。我发现了一个代码,它适用于某些数字,但不适用于其他数字。代码如下:

public void convertBinary (int decimal)
    {
        String binary = "";
        int remainder;
        
        while (decimal != 0)
        {
            remainder = decimal % 2;
            decimal /= 2;
            binary += remainder;
        }
        lblDecBinAns.setText(String.valueOf(binary));
                
        
    }
给定的数字由用户输入(“十进制”),当用户按下按钮时,输入的数字即为十进制。我不知道是否有一个调整,可以对这个代码,使其正常工作。也许有一种完全不同的算法可以实现这一点,或者有一种方法可以使用JLabel打印数组。我在这件事上被难住了一段时间,所以非常感谢你的帮助。谢谢

p.S.
我知道.toBinary函数,但我必须为这个函数创建自己的方法。

完成后,唯一缺少的是反转
二进制字符串

int decimal=10;
    String binary = "";
    int remainder;

    while (decimal != 0)
    {
        remainder = decimal % 2;
        decimal /= 2;
        binary += remainder;
    }
    System.out.println(new StringBuilder(binary).reverse().toString());
叫喊


1010
因此

您需要将
余数
添加为
二进制=余数+二进制
或将字符串反转。而且不需要使用
String.valueOf
,因为它已经是一个字符串了。并考虑“代码>十进制< /代码>为零的情况,您需要发送<代码> 0 <代码> < /p>
  public String convertBinary(int decimal) {
    String binary = "";
    int remainder;
    if(decimal == 0) {
      return "0";
    }
    while (decimal != 0) {
      remainder = decimal % 2;
      decimal /= 2;
      binary = remainder + binary;
    }
    return binary;
  }

对于不同的扭转,您也可以这样做

  • 将结果初始化为空字符串
  • 使用AND
    运算符屏蔽低位。您也可以在此处使用余数
    %
    运算符
  • 将位1或0转换为字符串,并将其前置为结果字符串
  • 将数字(
    十进制
    )右移1位,以便检查下一位
    while(!(十进制>>>1)==0)
  • 继续while循环,直到
    decimal==0
    (即所有
    1
    位已从数字中移出)
你试过这个吗

String test = Integer.toString(n, 2); //n is the number to convert and 2 the base (binary). In case you want an octal number, for example, just change the base to 8.
但如果您想将
字符串
重新转换为如下所示的数字,则使用此选项会导致问题:

int number = Integer.parseInt(test); //This will cause NumberFormatException.
为避免错误,必须将
test
的每个字符转换为
char

char digit = test.charAt(i);
最后,再次将每个字符转换为单个
字符串

String converted = String.valueof(digit);

现在您可以将新的
字符串
转换为
int

哦,好的。现在这是有道理的。谢谢你的帮助。谢谢,我没有想到0的情况。我可能应该做二进制=余数+二进制;首先。认为doing+=打字会更快,但没有意识到它实际上会弄乱答案。
String converted = String.valueof(digit);