每当我从2-36输入一个基数时,我想要我的代码,它可以输出一个十进制的数字。这是我的代码
package code;
public class solution{
public static int x2ten(String s, int base){
String[] bits = s.split("");
int result = 0;
for(int i=0; i < bits.length; i++ ){
int val = (Integer.parseInt(bits[bits.length-1-i])) * ((int)Math.pow(base,i));
val = charToInt(Integer.parseInt(bits[bits.length-1-i]))* ((int)Math.pow(base,i));
result += val;
}
return result;
}
public static int charToInt(char c){
char[] characters = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G',
'H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
for(int j = 0; j<characters.length; j++){
if(characters[j] == c){
return j;
}
}
return -1;
}
public static void main(String[] args)
{
System.out.println(x2ten("1101",2));
}
}
首先出现问题charToInt,它说我应该将charToInt(char c)更改为charToInt(int c)。但是charToInt的目的是转换为我输入的字符如1A,然后它可以输出26十进制。
答案 0 :(得分:2)
public static int x2ten(String s, int base) {
return Integer.parseInt(s, base);
}
我建议完全使用JDK中的方法来删除你的方法,JDK甚至具有相同的签名。
答案 1 :(得分:1)
如果您坚持使用自己的代码,您应该记住以下事项:
toCharArray()
方法。这会为您提供char[]
,这在您的其他程序中也会更有用val
分配值的重点是什么。摆脱第一线。这似乎不是很有用,是吗?Integer.parseInt(String s)
。它应该抛出NumberFormatException
。答案 2 :(得分:0)
如果您在 charToInt()函数的函数调用中注意到,您将传递整数作为参数,但如果你看到你的函数的定义,它期待一个字符。因此建议你把它改成 int 。希望这会有所帮助:)