ZOJ-1334

本文介绍了一个Java程序,该程序可以实现不同进制之间的数字转换。通过读取用户输入的字符串形式的数字及其原始进制和目标进制,程序能够准确地完成从任意进制到十进制的转换,再由十进制转换为目标进制,并输出转换后的结果。文章重点讲解了程序的实现原理和技术细节。
摘要由CSDN通过智能技术生成
import java.util.Scanner;

public class Main
{
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);

		while (sc.hasNext())
		{
			String line = sc.nextLine().trim();
			String ss[] = line.split("\\s+");
			String number = ss[0].trim();
			int fromBase = Integer.parseInt(ss[1].trim());
			int toBase = Integer.parseInt(ss[2].trim());

			String s = toToBase(toTenBase(number, fromBase), toBase);

			if (s.length() > 7)
				System.out.println("  ERROR");
			else
				System.out.format("%7s\n", s);
		}
	}

	static int toTenBase(String number, int fromBase)
	{
		int sum = 0;
		int index = 0;
		for (int i = number.length() - 1; i >= 0; i--)
		{
			char c = number.charAt(i);
			int n = c >= '0' && c <= '9' ? c - '0' : c - 'A' + 10;
			sum += n * Math.pow(fromBase, index++);
		}
		return sum;
	}

	static String toToBase(int number, int toBase)
	{
		if (toBase == 10)
			return number + "";
		else
		{
			StringBuilder sb = new StringBuilder();
			while (number != 0)
			{
				int i = number % toBase;
				sb.append(i >= 0 && i <= 9 ? (char) (i + '0') : (char) (i - 10 + 'A'));
				number /= toBase;
			}
			return sb.reverse().toString();
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值