Java 将基数为10的数字转换为基数为3的数字

Java 将基数为10的数字转换为基数为3的数字,java,Java,如何使用int converter(int num)方法将基数为10的数字转换为基数为3的数字 已经完成了。但当我试着运行它并输入一个数字时,它显示 java.lang.NumberFormatException:对于输入字符串:“strcvt” 我不知道怎么修理它。如果不使用字符串,我如何执行此操作?您没有使用声明的变量字符串strcvt,而是由于键入错误,将其用作“strcvt” 改变 answer = Integer.parseInt("strcvt"); 到 您必须解析strcvt的值

如何使用int converter(int num)方法将基数为10的数字转换为基数为3的数字

已经完成了。但当我试着运行它并输入一个数字时,它显示 java.lang.NumberFormatException:对于输入字符串:“strcvt”
我不知道怎么修理它。如果不使用字符串,我如何执行此操作?

您没有使用声明的变量
字符串strcvt
,而是由于键入错误,将其用作
“strcvt”

改变

answer = Integer.parseInt("strcvt");


您必须解析
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;
}

您根本不需要使用字符串

试试这个

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;
}