给定一个字符串作为输入,将其转换为它表示的数字。您可以假定该字符串仅包含数字。它不会包含负数。不要使用Integer.parseInt解决此问题。
我的方法
我将字符串转换为char数组并存储了原始数字,但无法将其转换为单个数字
我尝试转换单个元素,但是数字可以是任意长度。因此,很难采用这种方法。
提示:我暗示可以使用位置值来添加数字
例如,如果数字是2300,我将每个数字以数组的形式存储,那么它应该是2 * 1000 + 3 * 100 + 0 * 10 + 0 = 2300
但是我无法将其转换为代码。
谁能指导我该怎么做?
注意我不能使用任何内置函数。
public int toNumber(String str)
{
char ch1[]=str.toCharArray();
int c[]=new int[ch1.length];
int k=0;
for(int i=0;i<c.length;i++)
{
if(ch1[i]==48)
{
c[k++]=0;
}
else if(ch1[i]==49)
{
c[k++]=1;
}
else if(ch1[i]==50)
{
c[k++]=2;
}
else if(ch1[i]==51)
{
c[k++]=3;
}
else if(ch1[i]==52)
{
c[k++]=4;
}
else if(ch1[i]==53)
{
c[k++]=5;
}
else if(ch1[i]==54)
{
c[k++]=6;
}
else if(ch1[i]==55)
{
c[k++]=7;
}
else if(ch1[i]==56)
{
c[k++]=8;
}
else if(ch1[i]==57)
{
c[k++]=9;
}
}
}
最佳答案
您无需掌权或跟踪乘数。每次添加新数字时,只需将运行总计乘以10。并使用c - '0'
将字符转换为数字:
int n = 0;
for (int i = 0; i < str.length(); i++) {
n = n * 10 + str.charAt(i) - '0';
}
例如1234
0 * 10 + 1 = 1
1 * 10 + 2 = 12
12 * 10 + 3 = 123
123 * 10 + 4 = 1234