如何解决在 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 举报,一经查实,本站将立刻删除。