java 二进制转换为十六进制有什么错误,要怎么改正,求高手指教
importjava.util.*;publicclassertoh{privatestaticinth1=0;publicstaticvoidmain(String[]...
import java.util.*;
public class ertoh {
private static int h1 = 0;
public static void main(String[] args){
Scanner input =new Scanner(System.in);
System.out .print("请输入一个二进制数:");
String b=input.nextLine();
System.out .print("二进制转换为十六进制为:");
dtoh(b);
}
public static void dtoh(String s){
for(int i=0;i<s.length();i++){
char [][]bin=new char[s.length()/4][4];
bin[(i+1)%4][i]=s.charAt(i);
if((i+1)%3==0)
h1=(int)bin[(i+1)%4][0]+(int)bin[(i+1)%4][1]*2+(int)bin[(i+1)%4][2]*2*2+(int)bin[(i+1)%4][3]*2*2*2;
}
if(h1>=0&&h1<=9)
System.out.print("h1");
else
switch(h1){
case 10:System.out.print("A");
case 11:System.out.print("B");
case 12:System.out.print("C");
case 13:System.out.print("D");
case 14:System.out.print("E");
case 15:System.out.print("F");
}
}
} 展开
public class ertoh {
private static int h1 = 0;
public static void main(String[] args){
Scanner input =new Scanner(System.in);
System.out .print("请输入一个二进制数:");
String b=input.nextLine();
System.out .print("二进制转换为十六进制为:");
dtoh(b);
}
public static void dtoh(String s){
for(int i=0;i<s.length();i++){
char [][]bin=new char[s.length()/4][4];
bin[(i+1)%4][i]=s.charAt(i);
if((i+1)%3==0)
h1=(int)bin[(i+1)%4][0]+(int)bin[(i+1)%4][1]*2+(int)bin[(i+1)%4][2]*2*2+(int)bin[(i+1)%4][3]*2*2*2;
}
if(h1>=0&&h1<=9)
System.out.print("h1");
else
switch(h1){
case 10:System.out.print("A");
case 11:System.out.print("B");
case 12:System.out.print("C");
case 13:System.out.print("D");
case 14:System.out.print("E");
case 15:System.out.print("F");
}
}
} 展开
1个回答
展开全部
你的程序我帮你改完了,你看看吧.
import java.util.*;
public class ertoh {
private static int h1 = 0;
public static void main(String[] args){
Scanner input =new Scanner(System.in);
System.out .print("请输入一个二进制数:(左侧位数不足四位的请用零补齐)");
String b=input.nextLine();
System.out .print("二进制转换为十六进制为:");
dtoh(b);
}
public static void dtoh(String s){
char [][]bin=new char[s.length()/4][4];
for(int i=0;i<s.length();i++){
bin[i/4][i%4]=s.charAt(i);
if((i+1)%4==0){
h1=Integer.parseInt(bin[i/4][0]+"")*2*2*2+Integer.parseInt(bin[i/4][1]+"")*2*2+Integer.parseInt(bin[i/4][2]+"")*2+Integer.parseInt(bin[i/4][3]+"");
if(h1>=0 && h1<=9)
System.out.print(h1);
else
switch(h1){
case 10:System.out.print("A");break;
case 11:System.out.print("B");break;
case 12:System.out.print("C");break;
case 13:System.out.print("D");break;
case 14:System.out.print("E");break;
case 15:System.out.print("F");break;
}
}
}
}
}
运行结果:
请输入一个二进制数:(左侧位数不足四位的请用零补齐)010010100111
二进制转换为十六进制为:4A7
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询