繁体   English   中英

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

[英]how to write a program to convert a binary number to decimal number without using lang class?

这是我的代码,我使用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类进行相同的转换? 请帮我!!

思考此问题的一种方法是将问题分为两部分。

  1. 测试输入的字符串是否代表二进制数。 这很简单,对吧? 考虑一下如何测试字符串中的字符。
  2. 转换为十进制。 这有点难。 但是,一旦确定String是合法的二进制文件,代码将更短,更简单,更容易编写和理解。

ps您添加到问题中的“班级”标记是指Java / C#“班级”,而不是功课。 我认为“作业”是正确的标记。

您不需要导入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);


}

}

我建议您浏览从索引N-1到0的输入字符,并检查当前字符是否有效,如果无效,则抛出异常停止。 如果它是有效的,则您可以计算“ 2 pow(二进制数字的当前位置,例如(N-1-i))”,然后将其添加到结果中。 由于这可能是家庭作业,因此我只能给您这些不完整的提示。 您应该考虑一下,其余的解决方案取决于您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM