Учитывая, что строка введена, преобразуйте ее в число, которое она представляет. Вы можете предположить, что строка состоит только из числовых цифр. Он не будет состоять из отрицательных чисел. Не используйте Integer.parseInt для решения этой проблемы.Результат преобразования строки в число не соответствует ожидаемому
MyApproach
я преобразовал строку в массив символов и хранится оригинальный номер, но я не могу превратить его в один номер Я попытался преобразования отдельных элементов, но цифры могут быть любой длины. Таким образом, было трудно следовать этому подходу.
Подсказка: У меня есть намек, что цифры могут быть добавлены с помощью значений места
Для, например, если номер 2300.I хранится каждый номер в виде arrays.Then должно быть 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;
}
}
}
Даже не Math.pow ?, петли в обратном направлении использовать вар, который вы множественные на 10 (к несколько nr с) и суммировать их. –
Рассмотрим инструкцию switch, если ... если читать ... –
'if (ch1 [i] == 48)' -> [избегать магических чисел] (http : //stackoverflow.com/questions/47882/what-is-a-magic-number-and-why-is-it-bad). 'if (ch1 [i] == '1')' намного понятнее. – Pshemo