Java 将基数为10的数字转换为基数为3的数字
如何使用int converter(int num)方法将基数为10的数字转换为基数为3的数字 已经完成了。但当我试着运行它并输入一个数字时,它显示 java.lang.NumberFormatException:对于输入字符串:“strcvt”Java 将基数为10的数字转换为基数为3的数字,java,Java,如何使用int converter(int num)方法将基数为10的数字转换为基数为3的数字 已经完成了。但当我试着运行它并输入一个数字时,它显示 java.lang.NumberFormatException:对于输入字符串:“strcvt” 我不知道怎么修理它。如果不使用字符串,我如何执行此操作?您没有使用声明的变量字符串strcvt,而是由于键入错误,将其用作“strcvt” 改变 answer = Integer.parseInt("strcvt"); 到 您必须解析strcvt的值
我不知道怎么修理它。如果不使用字符串,我如何执行此操作?您没有使用声明的变量
字符串strcvt
,而是由于键入错误,将其用作“strcvt”
改变
answer = Integer.parseInt("strcvt");
到
您必须解析
strcvt
的值,而不是字符串“strcvt”
因此,您必须删除双qoutesanswer=Integer.parseInt(strcvt)代码>
并在循环外部定义变量strcvt
。
将代码更改为:
public static int converter(int num) {
int answer;
int cvt = 0;
String strcvt = null ;
while (num >= 0) {
int i = num / 3;
int j = num % 3;
String strj = Integer.toString(j);
strcvt = Integer.toString(cvt);
strcvt = strj + strcvt;
num = i;
break;
}
answer = Integer.parseInt(strcvt);
return answer;
}
您根本不需要使用字符串
试试这个
public static long asBase3(int num) {
long ret = 0, factor = 1;
while (num > 0) {
ret += num % 3 * factor;
num /= 3;
factor *= 10;
}
return ret;
}
注:计算机中的数字仅为N位,即32位或64位,即二进制。但是,您可以创建一个数字,当以10为基数打印时,该数字实际上将显示为以3为基数的数字。“以3为基数的数字”和“以10为基数的数字”是相同的数字。在方法intconverter(intnum)
中,您正在更改数字,尽管您只需要更改表示形式。查看和,这应该会对您有所帮助。您是否打算在parseInt
方法中使用变量strcvt
?您的代码当前传递文本字符串“strcvt”,您希望从这一行中得到什么<代码>整数.parseInt(“strcvt”)代码>谢谢!!它起作用了!但我得到的答案是错的。我必须检查我的逻辑。@PeterLawrey,asBase3(3)代码>打印“1”而不是“10”。@PeterLawrey,我想你的意思是“factor*=10”;而不是“factor+=10;”:)这很奇怪,因为它不返回基数3,它返回的基数10看起来像基数3。在我看来,如果你想用基数3表示它,你真的应该使用字符串。@Octopus通常会混淆/混淆某些数据的值和它的打印方式,而没有意识到它们之间的差异。在0范围内使用是安全的≤ 这个答案对我帮助很大;我需要将十进制(以10为基数)数转换为三进制(以3为基数)数,我打算在互联网上搜索后使用其中一种实现。但是,使用Integer.toString(inti,intradix)
是一种更简单的方法。
public static int converter(int num) {
int answer;
int cvt = 0;
String strcvt = null ;
while (num >= 0) {
int i = num / 3;
int j = num % 3;
String strj = Integer.toString(j);
strcvt = Integer.toString(cvt);
strcvt = strj + strcvt;
num = i;
break;
}
answer = Integer.parseInt(strcvt);
return answer;
}
public static long asBase3(int num) {
long ret = 0, factor = 1;
while (num > 0) {
ret += num % 3 * factor;
num /= 3;
factor *= 10;
}
return ret;
}