【发布时间】:2014-07-03 22:08:02
【问题描述】:
此代码是我必须开发的项目的一部分。我需要编写一个 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 的构建方式来做到这一点?
Integer.toString(number, base) -
因为我想学会自己做。我知道那样,但它太容易了,我不能使用它(由于我正在从事的项目的规则)。
-
请注意,您实际上并没有从 base 10 转换。从 base 10 字符序列到 Java int 的转换是由一些其他代码完成的,例如 Java 编译器或
Scanner.nextInt。您正在从 Java int 转换为 base n。 -
是的,我知道,我在导入中使用 java.util.Scanner :)
-
当您需要转换为大于 10 的基础 大于 时,乐趣就来了……但我不知道您是否需要它
标签: java