如何编写程序将二进制数转换为十进制数而不使用lang类?

时间:2013-03-02 17:33:34

标签: java class binary decimal

这是我的代码,我使用的是lang类。但我想编写一个不包含lang类的类似程序。请帮帮我。

import java.lang.*;
import java.io.*;
public class DecimalToBinary {
public static void main(String[] args) throws IOException{
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Enter a Binary number");
    String str=br.readLine();
    long num=Long.parseLong(str);
    long rem;
    while(num>0){
        rem=num%10;
        num=num/10;
        if(rem!=0&&rem!=1){
            System.out.println("This is not a binary number,Please enter again");

        }
    }
    int i=Integer.parseInt(str,2);
    System.out.println("Decimal:"+i);


}

}

如何在不使用lang类的情况下进行相同的转换? 请帮帮我!!

3 个答案:

答案 0 :(得分:1)

考虑这个问题的一种方法是将问题分成两部分。

  1. 测试输入的字符串是否代表二进制数。 这非常简单,对吧?想想你的意思 测试字符串中的字符。
  2. 转换为十进制。这有点难。但是,一旦你是 确保String是合法的二进制文件,代码将更短 更简单,更容易编写和理解。
  3. P.S。您添加到问题中的“class”标记是指Java / C#“类”,而不是学校作业。我认为“家庭作业”是正确的标签。

答案 1 :(得分:0)

您无需导入java.lang。*
以下是编辑后的代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class DecimalToBinary {

public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Enter a Binary number");
    String str = br.readLine();
    long num = Long.parseLong(str);
    long rem;
    while (num > 0) {
        rem = num % 10;
        num = num / 10;
        if (rem != 0 && rem != 1) {
            System.out.println("This is not a binary number,Please enter again");

        }
    }
    int i = Integer.parseInt(str, 2);
    System.out.println("Decimal:" + i);


}

}

答案 2 :(得分:0)

我建议你浏览从索引N-1到0的输入字符并检查当前字符是否有效,如果没有则通过抛出异常来停止。我这是有效的,你计算像" 2 pow(二进制数字的当前位置,例如(N-1-i))"并将其添加到您的结果中。由于这可能是一项功课,我只能给你这些不完整的提示。你应该考虑一下,其余的解决方案取决于你。