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

时间:2015-02-06 08:44:31

标签: java

如何使用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” 我不知道如何解决它。如何在不使用字符串的情况下执行此操作?

4 个答案:

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