此代码是我必须开发的项目的一部分。我需要编写一个 java 方法,将一个数字(基数 10)转换为 n
基数中的另一个数字。这是类的代码:
public class converter {
public int from_10_to_n(int base, int newbase) {
int k = 0;
String res = "";
String output = "";
do { //Below I explain what I'm doing here
base /= newbase;
k = base % newbase;
res += String.valueOf(k);
} while (base != 0);
for(int i=res.length()-1; i>-1; i--) {
output += res.charAt(i);
}
return Integer.parseInt(output);
}
我想到了这样制作程序:
do {} while();
循环将数字相除并将余数保存在 k 中。然后我创建一个 for 循环来反转字符串 res(其中包含提醒)。
顺便说一句,当我在我的 main 中调用该方法时,我遗漏了最后一位数字。我的意思是:
converter k = new converter();
int e = k.from_10_to_n(a /*base 10 number*/, b /*Base n number*/);
System.out.println(a+" -> "+b+" is " + e);
使用这段代码,如果我想将 231 转换为基数 4,我得到的结果是 321
而不是 3213
。我检查了我的代码,但找不到解决方案。有什么想法吗?
我在其他基地也有同样的错误。例如 31(基数 10)是 11111
(基数 2),但我的程序返回 1111
。
最佳答案
翻转循环中前两行的顺序;通过先进行除法,您将失去第一个余数。但随后您需要处理最后的剩余部分。
关于java - 将数字从 10 进制转换为 N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24563998/