如何使用int converter(int num)方法将基数为10的数字转换为基数为3的数字。
import java.util.Scanner;
public class BaseConverter {
int answer;
int cvt = 0;
while (num >= 0) {
int i = num / 3;
int j = num % 3;
String strj = Integer.toString(j);
String strcvt = Integer.toString(cvt);
strcvt = strj + strcvt;
num = i;
break;
}
answer = Integer.parseInt("strcvt");
return answer;
}
public static void main(String[] agrs) {
Scanner in = new Scanner(System.in);
System.out.println("Enter a number: ");
int number = in.nextInt();
System.out.print(converter(number));
in.close();
}
编译完成了。但当我试图运行它并输入一个数字时,就表明了这一点 java.lang.NumberFormatException:对于输入字符串:“strcvt” 我不知道如何解决它。如何在不使用字符串的情况下执行此操作?
答案 0 :(得分:7)
根本不需要使用String。
试试这个
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中的数字。
答案 1 :(得分:3)
您没有使用变量声明String strcvt
,而是由于您使用的错字错误"strcvt"
变化
answer = Integer.parseInt("strcvt");
到
answer = Integer.parseInt(strcvt);
答案 2 :(得分:3)
" base 3 number"和"基数10"是相同的数字。在方法int converter(int num)
中,您只需更改数字即可更改数字。查看parseInt(String s, int radix)
和toString(int i, int radix)
,这对您有帮助。
答案 3 :(得分:1)
您必须解析strcvt
的值而不是字符串“strcvt”
所以你必须删除双qoutes answer = 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;
}