在 Java 中将存储为 String 的十六进制数转换为其等效的二进制数 (String),反之亦然尝试编写代码但无法获得结果

如何解决在 Java 中将存储为 String 的十六进制数转换为其等效的二进制数 (String),反之亦然尝试编写代码但无法获得结果

所以我尝试为程序编写代码,但是当我运行它时,它 接受无限输入但没有输出并且没有语法错误。一世 不要明白我哪里出错了。

import java.util.*;
class A5
{   
    public String dec2bin(char c)
    {
        int d=0;
        if(c>='A')
        {
            d=c-55;
        }
        else
        {
            d=c-48;
        }
        String b="";
        while(d>0)
        {
            int r=d%2;
            b=r+b;
            d=d/2;
        }
        while(b.length()<4)
        {
            b="0"+4;
        }
        return b;
    }
    public String hex2bin(String h)
    {
        String b="";
        for(int i=0;i<h.length()-1;i++)
        {
            char c=h.charat(i);
            String b4=dec2bin(c);
            b=b+b4;
        }
        return b;
    }
    public char bin2dec(String b)
    {
        int bin=Integer.valueOf(b);
        int d=0,p=0;
        while(bin>0)
        {
            int dig= bin%10;
            d=d+dig*(int)Math.pow(2,p++);
            bin=bin/10;
        }
        if(d<10)
        {
            return (char)(d+48);
        }
        else
        {
            return (char)(d+55);
        }
    }
    public String bin2hex(String b)
    {
        while(b.length()%4!=0)
        {
            b="0"+b;
        }
        String hex="";
        for(int i=0;i<b.length();i+=4)
        {
            String b4= b.substring(i,i+4);
            char d= bin2dec(b4);
            hex= hex+d;
        }
        return hex;
    }
    public static void main()
    {
        A5 obj=new A5();
        Scanner sc=new Scanner(system.in);
        System.out.println("Enter a hexadecimal no.");
        String n1=sc.next();
        System.out.println("Decimal no.=" +obj.hex2bin(n1));
        System.out.println("Enter a decimal no.");
        String n2=sc.next();
        System.out.println("Hexadecimal no.=" +obj.bin2hex(n2));
    }
}

解决方法

您可以使用 sc.nextLine() 代替 sc.next() 吗?

public static void main(String[] args)
    {
        A5 obj=new A5();
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter a hexadecimal no.");
        String n1=sc.nextLine();
        System.out.println("Decimal no.=" +obj.hex2bin(n1));
        System.out.println("Enter a decimal no.");
        String n2=sc.nextLine();
        System.out.println("Hexadecimal no.=" +obj.bin2hex(n2));
    }

nextLine 方法读取输入字符串,直到您按下 Enter。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?