题目:写一个程序,实现十六进制与十进制数之间的相互转换。程序提供两个选项,分别表示不同的转换,如:
1.十六进制转换为十进制
2.十进制转换为十六进制
--十六进制转换为十进制时,用户输入为一十六进制字符串,其中字母大小写可通用,程序通过计算显示该十六进制数对应十进制数,如果其中含有非法十六进制字符,则提示输入无效,程序结束
-- 十进制转换为十六进制数时,用户输入为一整数,通过计算显示该十进制数对应的十六进制字符串,用大写字母显示
package Problems.C0315;
import java.util.*;
public class test4 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入你的选择:");
System.out.println("1.十六进制转十进制");
System.out.println("2.十进制转十六进制");
System.out.print("您的输入:");
int num=input.nextInt();
if(num==1){
System.out.print("请输入十六进制数:");
//输入十六进制数
String hex=new String();
hex=input.next();//不要用nextline
//十六进制 转 十进制
boolean flag=true;//设置开关,便于在循环语句和外部非循环语句都能判断
char a;
String str;
String sixteen="0123456789ABCDEF";
for(int i=0;i<hex.length();i++){//判断语句必须循环判断
a=hex.charAt(i);//将输入的字符串每一位值赋给a然后与十六进制字符串比较,看是否匹配
str=String.valueOf(a);//将a转换成字符串
if(!sixteen.contains(str)){//判断标准十六进制是否包含输入的字符串
System.out.println("输入无效!");
flag=false;
break;
}
}
if(flag==true){//输出语句不能进入循环,不然会一直输出,所以要用开关判断是否输出
System.out.println( hex+"的十进制是"+Integer.parseInt(hex.toUpperCase(),16));
}
}
if(num==2){
System.out.print("请输入十进制数:");
//输入十进制数
int ten=input.nextInt();
//十进制 转 十六进制
String str2=Integer.toHexString(ten);//分开写是为了下面的转大写操作
System.out.println(ten+"的十六进制数是"+str2.toUpperCase());//此方法返回由十六进制的参数(以16为基数)表示的字符串
}
}
}
十六进制转十进制的判断时,用bool开关是关键!