题意及思路
- 题意:输入两个数n,r,将n(十进制数)转换为r进制。
- 思路:%r操作即可转换。
- 踩坑点:第一,n有可能为负数,若为负数,则注意负数的情况。第二,若转换的数字大于10,exp:10 --> A。则将其转换为16进制中各个数的对应形式。尤其注意(我自己的问题),当输出一个字符(如A)时,不要“急着”输出换行符,否则将会步我的后尘。哎!
代码
package com.kyrie.java1;
import java.util.ArrayList;
import java.util.Scanner;
public class HD2031 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n, r;
while (in.hasNext()) {
n = in.nextInt();
r = in.nextInt();
trans(n, r);
}
in.close();
}
private static void trans(int n, int r) {
int t = 0;
boolean flag = false;
if (n < 0) {
flag = true;
n = -n;
}
ArrayList<Integer> aL = new ArrayList<Integer>();
// translate
while (n != 0) {
aL.add(n % r);
n /= r;
}
// 判断负号
if (flag) {
System.out.print("-");
}
for (int i = aL.size() - 1; i >= 0; i--) {
t = aL.get(i);
if (t >= 10) {
System.out.printf("%c", 'A' + (t - 10));
} else {
System.out.print(t);
}
}
System.out.println();
}
} 
京公网安备 11010502036488号