2013-10-24 4 views
-6

У меня есть строка. Я разделил и сохранил его как массив char. Я пытаюсь преобразовать его, используя Integer.parseInt, и я получаю сообщение об ошибке. Как преобразовать String в int?Java преобразовать строку в int

Вот мой код:

String tab[]= null; 
tab=pesel.split(""); 
int temp=0; 
for(String tab1 : tab) 
{ 
    temp=temp+3*Integer.parseInt(tab1); //error 
} 
+3

Какая ошибка? Вы пытались напечатать строку, чтобы убедиться, что она представляет собой номер? Почему «split» («») '? – Zong

+0

Пожалуйста, покажите, как выглядит ваш ввод, и каков ваш ожидаемый результат: – StormeHawke

ответ

2

Предполагая, что у вас есть строка цифр (например "123"), вы можете использовать вместо toCharArray():

for (char c : pesel.toCharArray()) { 
    temp += 3 * (c - '0'); 
} 

Это позволяет избежать Integer.parseInt() вообще. Если вы хотите, чтобы каждый символ был цифрой, вы можете использовать Character.isDigit().


Ваша ошибка в том, что str.split("") содержит ведущую пустую строку в массиве:

System.out.println(Arrays.toString("123".split(""))); 
 
[, 1, 2, 3] 

Теперь есть это трюк с использованием отрицательных lookaheads, чтобы избежать этого:

System.out.println(Arrays.toString("123".split("(?!^)"))); 
 
[1, 2, 3] 

Хотя, в любом случае, я предпочел бы подход, показанный выше.

+0

@LoganMurphy Конечно, я сделал это. – arshajii

+0

Хороший код, THX для справки. Я не видел места на входе, когда я печатаю свою строку. – set4812

+0

@ set4812 'str.split (" ")' будет * всегда * содержать ведущую пустую строку. – arshajii

0

Вы пропустили пробел в методе разделения.

tab=pesel.split(" "); 
+1

Не, если строка - это всего лишь последовательность цифр. – MByD

Смежные вопросы