如何通过基本转换将我的输入字符串转换为整数
How can I convert my input String to an integer with a base conversion
我想要我的代码,每当我输入一个从 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。
这是一个 already been invented:
的轮子
public static int x2ten(String s, int base) {
return Integer.parseInt(s, base);
}
我建议完全删除您的方法,转而使用 JDK 中的方法,它甚至具有相同的签名。
如果您注意到在对函数 charToInt() 的 函数调用 中,您正在传递一个 integer 作为参数,但如果您看到函数的 definition,它期望 character.Hence 它建议您将其更改为 int。希望这有帮助:)
如果您坚持使用自己的代码,您可能应该注意以下事项:
- 如果要获取字符串中所有字符的数组,请使用
toCharArray()
方法。这给你一个char[]
,它在你程序的其余部分也会更有用
- 如果您从不使用该值并立即在其中获取另一个值,那么为
val
赋值有什么意义。摆脱第一行。好像用处不大吧?
- 如果您在数字中使用文字,请注意
Integer.parseInt(String s)
。它应该抛出 NumberFormatException
.
我想要我的代码,每当我输入一个从 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。
这是一个 already been invented:
的轮子public static int x2ten(String s, int base) {
return Integer.parseInt(s, base);
}
我建议完全删除您的方法,转而使用 JDK 中的方法,它甚至具有相同的签名。
如果您注意到在对函数 charToInt() 的 函数调用 中,您正在传递一个 integer 作为参数,但如果您看到函数的 definition,它期望 character.Hence 它建议您将其更改为 int。希望这有帮助:)
如果您坚持使用自己的代码,您可能应该注意以下事项:
- 如果要获取字符串中所有字符的数组,请使用
toCharArray()
方法。这给你一个char[]
,它在你程序的其余部分也会更有用 - 如果您从不使用该值并立即在其中获取另一个值,那么为
val
赋值有什么意义。摆脱第一行。好像用处不大吧? - 如果您在数字中使用文字,请注意
Integer.parseInt(String s)
。它应该抛出NumberFormatException
.