算法提高 P0102
时间限制:1.0s 内存限制:256.0MB
用户输入三个字符,每个字符取值范围是0-9,A-F。然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出,十六进制表示成3位,八进制表示成4位,若不够前面补0。(不考虑输入不合法的情况)
输入
1D5
输出
(注意冒号后面有一个空格)
Hex: 0x1D5
Decimal: 469
Octal: 0725
输入
1D5
输出
(注意冒号后面有一个空格)
Hex: 0x1D5
Decimal: 469
Octal: 0725
总结该题目中使用的类或方法:
1、Integer.valueOf(xString, 16):第二个参数16为xString使用的基数(进制),结果是一个表示字符串指定的整数值的 Integer 对象。(整形值采用十进制整数表示)
2、Integer.toBinaryString(int i):将十进制转化为2进制
3、Integer.toHexString(int i):将十进制转化为16进制
4、Integet.toOctalString(int i):将十进制转化为8进制
5、Integer.parseInt(String s):将字符串s转化为整形
6、两个字符串连接:String a = "1"; String b="2"; Stirng c=a+b; c为12。
7、字符串string的所有字符转化为大写:string.toUpperCase();
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
String xString = scanner.next();
String shiString = Integer.valueOf(xString, 16).toString();//10进制
int shijinzhi = Integer.parseInt(shiString);
String bajinzhi = Integer.toOctalString(shijinzhi);//八进制
String shiliujinzhi = Integer.toHexString(shijinzhi).toUpperCase();//十六进制(大写)
//判断十六进制是否为3位,补0
if(shiliujinzhi.length()==1){
String temp = "0x00";
shiliujinzhi=temp+shiliujinzhi;
}else if(shiliujinzhi.length()==2){
String temp = "0x0";
shiliujinzhi=temp+shiliujinzhi;
}else if(shiliujinzhi.length()==3){
String temp = "0x";
shiliujinzhi=temp+shiliujinzhi;
}
//判断八进制是否为4位,补0
if(bajinzhi.length()==1){
String temp = "000";
bajinzhi=temp+bajinzhi;
}else if(bajinzhi.length()==2){
String temp = "00";
bajinzhi=temp+bajinzhi;
}else if(bajinzhi.length()==3){
String temp = "0";
bajinzhi=temp+bajinzhi;
}
System.out.println("Hex: "+shiliujinzhi);
System.out.println("Decimal: "+shijinzhi);
System.out.println("Octal: "+bajinzhi);
}
}