gpt4 book ai didi

java - 在Java中将任何基数的数字转换为十进制

转载 作者:行者123 更新时间:2023-12-02 05:03:46 25 4
gpt4 key购买 nike

我正在尝试使用此方法将任何基数的数字转换为十进制。

public static int convertToDecimal(String str, int base){

int v = 0;
int total = 0;
int pow = 0;
str = str.toUpperCase();
for(int i = str.length(); i > -1; i--){
char c = str.charAt(i);
if (c >= '0' && c <= '9') {
v = c - '0';
}else if (c >= 'A' && c <= 'Z'){
v = 10 + (c - 'A');
}
total += v * Math.pow(base,pow);
pow++;
}
return total;
}

但我最终遇到了数组越界异常。我在这里做错了什么?

最佳答案

正如@HovercraftFullOfEels 已经指出的那样。字符串是从零开始的。您从 i=str.length() 开始,它会抛出 ArrayIndexOutOfBoundsException,因为最大可能的索引是 i=str.length()-1 >.

public static int convertToDecimal(String str, int base) {
int v = 0;
int total = 0;
int pow = 0;
str = str.toUpperCase();
for (int i = str.length() - 1; i >= 0; i--) {
char c = str.charAt(i);
if (c >= '0' && c <= '9')
v = c - '0';
else if (c >= 'A' && c <= 'Z')
v = 10 + (c - 'A');
total += v * Math.pow(base, pow);
pow++;
}
return total;
}

关于java - 在Java中将任何基数的数字转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28000220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com