第七章 方法(2)-进制转化作业详解

作业指导,进制转换问题具体如代码所示,将十进制转换为二进制,八进制,十六进制均有库函数提供方法,也可以自己写出,下面代码设计了两种方法!

public class jinzhizhuanhuankuhanshu {
	/**
	 * 将十进制转换为十六进制
	 * @param tenNum
	 * @return
	 */
	public static String tenNumToSixteenNum(int tenNum) {
		String modStr = "";
		do {
			int mod = tenNum %16; //取余
			switch (mod) {
			case 10:
				modStr += "A";
				break;
			case 11:
				modStr += "B";
				break;
			case 12:
				modStr += "C";
				break;
			case 13:
				modStr += "D";
				break;
			case 14:
				modStr += "E";
				break;
			case 15:
				modStr += "F";
				break;

			default:
				modStr += mod;
				break;
			}
			tenNum = tenNum /16; //取整
		} while (tenNum > 0);
		//将字符串转换为支付数组,将数组逆序输出
		char[] modchars = modStr.toCharArray();
		String result = "";
		for (int i = modchars.length-1; i>= 0;i--) {
			result += modchars[i];
		}
		
		return result;
	}
	public static void main(String[] arg){
	int tenNum = 225;
	String sixteenStr = tenNumToSixteenNum(tenNum);
	System.out.println("将十进制数【"+tenNum+"】转换为16进制数【"+tenNumToSixteenNum(tenNum)+"】");
	System.out.println("将十进制数【"+tenNum+"】转换为16进制数【"+Integer.toHexString(tenNum)+"】");
	//将16进制转换为10进制数
	tenNum = sixteenNumToTenNum(sixteenStr);
	System.out.println("将16进制数【"+sixteenStr+"】转换为10进制数【"+tenNum+"】");
	
	
	
		}
	/**
	 * 将16进制转换为10进制
	 * @param sixteenStr
	 * @return
	 */
	public static int sixteenNumToTenNum(String sixteenStr) {
		char[] sixteenArraty = sixteenStr.toCharArray();
		int result = 0;
		for (int i = 0; i < sixteenArraty.length; i++) {
			int num;
			//要对对应的A B C D E F转换为10 11 12 13 14 15
			switch (sixteenArraty[i]) {
			case 'A':
				num = 10;
				break;
			case 'B':
				num = 11;
				break;
			case 'C':
				num = 12;
				break;
			case 'D':
				num = 13;
				break;
			case 'E':
				num = 14;
				break;
			case 'F':
				num = 15;
				break;
			default:
				//num = sixteenArray[i]好像没有问题,但实际上是有问题的(字符有字符的编码,
				//而字符编码不是该数字)
				num = Integer.parseInt(""+sixteenArraty[i]);
				break;
			}
			result +=num * Math.pow(16, sixteenArraty.length-1-i);
		}
		return result;
	}
	}
需注意在写switch-case语句时break的使用,万万不可写错地方或者说不能不写!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NoSuchManException

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值