簡體   English   中英

將基數為10的數字轉換為基數為3的數字

[英]Convert a base 10 number to a base 3 number

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

您根本不需要使用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中的數字。

你沒有使用變量聲明的String strcvt ,而是由於你用作"strcvt"拼寫錯誤

更改

answer = Integer.parseInt("strcvt");

answer = Integer.parseInt(strcvt);

“base 3 number”和“base 10 number”是相同的數字。 在方法int converter(int num)您正在更改數字,盡管您只需要更改表示。 看看parseInt(String s, int radix)toString(int i, int radix) ,這應該對你有幫助。

你必須解析strcvt的值而不是字符串“strcvt”

所以你必須刪除double 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM