[英]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.