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