2012-11-07 47 views
0

你好,我有一个程序,成功地将十进制转换为二进制。但是,在最后,代码将0除以0,最终导致错误消息。这是代码。将数字转换为二进制,无法修复0/0错误

import java.lang.*; 
import java.util.*;  
public class BinaryConverter { 
public static void main (String[] argv) { 

    Scanner input = new Scanner (System.in); 


    int number = 0; 
    int factorOfTwo = 0; 

    do { 
     System.out.println("Enter the number to convert (0-255): "); 
     number = input.nextInt(); 
    } while (number< 0 || number > 255); 

    System.out.println("The number " + number + " converted to binary is : "); 

    for (factorOfTwo = 1; factorOfTwo <= 128; factorOfTwo*=2) { 
     if (number/factorOfTwo >= 1){ 
      System.out.print("1"); 
      number -= factorOfTwo; 
     } 
     else System.out.print ("0"); 
    } 

} // end of main 
}// end of class 
+0

我没有看到错误...如果您将变量声明为尽可能小的范围,您的代码将变得更干净,但它不会给我一个错误......什么值失败? –

+2

唯一的划分是'factorOfTwo',我看不出'factorOfTwo'可以是零。 – NPE

+0

您可以使用['toBinaryString()'](http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Integer.html#toBinaryString%28int%29)。 – Sirko

回答

0

在发布的代码中没有被零除。只有一个分区,factorOfTwo在该循环中永远不能为0。

如果仍然由零差错,分工,确保您在此运行的代码:

  1. 检查编译后的class文件更新的源文件。

  2. 检查编译后的类文件是否在类路径中第一个。

另外,还要注意亚希的评论。您正在向后创建二进制数。

0

您收到的错误消息是什么?因为你的factorofTwo不能是0for (factorOfTwo = 1; factorOfTwo <= 128; factorOfTwo*=2) ..它只是递增的

+0

并且它应该递减...... –

+0

是的。我同意@AkiSuihkonen。 'factorofTwo'的值应该以'128'开始,然后递减。 128 - > 64 - > 32 - >等等。 – xan