给定一个字符串作为输入,将其转换为它表示的数字。您可以假定该字符串仅包含数字。它不会包含负数。不要使用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

09-30 17:46
查看更多