2011-01-31 303 views
0

我想在java中创建一段代码,它将十进制值转换为二进制而不使用内置二进制转换器命令。十进制到二进制转换器

但它不工作...

public class MainFrame { 
public static void binary(int number) { 

    String result = new String(); 

    int binaryValues[] = {1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1}; 

    if (number == 0) { 
     result = result + "0"; 
    } else if (number == 1) { 
     result = result + "1"; 
    } else { 
     for (int i = 0; i < 11; i++) { 
      while(number >= binaryValues[i]) { 
       if (number % binaryValues[i] >= 0) { 
        result = result + "1"; 
        number -= binaryValues[i]; 
       } else { 
        result = result + "0"; 
    //    number -= binaryValues[i]; 
       } 
      } 
     } 
    } 

    System.out.println(result); 
} 

public static void main(String[] args) { 
    binary(5); 
} 
} 
+2

是这个家庭作业? – Bozho 2011-01-31 09:27:17

+1

看起来像功课,你有一个代码。请解释你到目前为止所了解的内容。 – 2011-01-31 09:29:22

+0

它不是功课,我只是对如何做它感兴趣 – java 2011-01-31 09:36:24

回答

0

取下else块这一行:

number -= binaryValues[i]; 

原因:如果数字大于2 ñ ,那么你想添加0并且不想减去2 n

并删除while声明,这是没有必要的(除非所有数字都小于2 )。只要保持for循环和if/else。

终于,if条件不是模而是负。对我来说,以下工作:

for (int i = 0; i < 11; i++) { 
    if (number - binaryValues[i] >= 0) { 
     result = result + "1"; 
     number -= binaryValues[i]; 
    } else { 
     result = result + "0"; 
    } 
} 
2

对于整数> = 0:

public class DecimalToBinary { 

    public static void main(String[] args) { 
     int dec = 127; 
     StringBuilder binary = new StringBuilder(); 
     do { 
      binary.insert(0, dec % 2); 
      dec /= 2; 
     } while (dec != 0); 
     System.out.println(binary.toString()); 
    } 
} 
0
import java.util.Scanner; 
public class BinaryConversion { 
public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
System.out.println("Enter a decimal number: "); 
    int numerator = input.nextInt(); 
     int num = numerator; 
     boolean runLoop = true; 
    String digit = ""; 
    while(runLoop){ 
     int bin = numerator % 2; 
    numerator = (numerator/2); 
    digit= bin+digit; 
    if (numerator == 0) { 
     break; 
    } 

    } 
    input.close(); 
    System.out.println("The binary value of "+num+" is "+digit); 
} 
}