我只能获得小于5的正确输出。五的输出是110,当它应该是101.六的输出是101,十的输出是1100.
//while loop divides each digit
while (decimal > 0)
{
//divides and digit becomes the remainder
int digit = decimal % 2;
//makes the digit into a string builder so it can be reversed
binaryresult.append(digit);
decimal = decimal / 2;
display.setText(binaryresult.reverse());
}
答案 0 :(得分:1)
使用以下可能适合您的代码
import java.util.Scanner;
public class decToBinary{
public String decToBin(int n) {
StringBuilder result = new StringBuilder();
int i = 0;
int b[] = new int[10];
while (n != 0) {
i++;
b[i] = n % 2;
n = n / 2;
}
for (int j = i; j > 0; j--) {
result.append(b[j]);
}
return result.toString();
}
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println("Enter decimal no :");
int n=sc.nextInt();
System.out.println("binary numbers is :");
decToBinary dtb = new decToBinary();
System.out.println(dtb.decToBin(n));
}
}
答案 1 :(得分:0)
这样的事情可能更接近你的要求:
while (decimal > 0) {
result.insert(0, (char) ((decimal % 2) + '0'));
decimal /= 2;
}
它使用insert
来避免反转并添加字符而不是数字。
但是你最好使用内置机制,例如:
BigInteger.valueOf(decimal).toString(2)
答案 2 :(得分:0)
我无法使用以下内容重现该行为:
public static String decToBin(int n) {
StringBuilder result = new StringBuilder();
while (n > 0) {
int dec = n % 2;
result.append(dec);
n = n / 2;
}
return result.reverse().toString();
}
但是,请考虑使用内置
public static String decToBin(int n) {
return Integer.toBinaryString(n);
}
(甚至如上所述的BigInteger)
答案 3 :(得分:0)
试试这段代码,我希望这是你在寻找的东西:
public class DecimalToBinary {
public static void main(String[] args)
{
int decimal=11;
StringBuffer binaryValue=new StringBuffer();
while(decimal>0 ){
int rem=decimal%2;
decimal=decimal/2;
System.out.println("Remainder:"+rem);
binaryValue.append(rem);
}
System.out.println("binary is:"+binaryValue.reverse());
}
}