StringIndexOutOfBoundsException
public static void main(String[] args) {
String s = "153 asd 654";
int count = 0;
char c1 = 0;
for (int i = 0; i < s.length(); i++) {
c1 = s.charAt(i);
if (Character.isDigit(c1)) {
int temp = i;
while (Character.isDigit(c1)) {
temp++;
count++;
c1 = s.charAt(temp);
}
}
}
System.out.println(count);
}
выкидывает ошибку StringIndexOutOfBoundsException,если в строке дописать любую букву ошибка уходит,может кто-нибудь объяснить почему так происходит?Условие задачи такое:нужно посчитать кол-во чисел в строке
всем огромное спасибо за внимание к моему вопросу:)
Ответы (3 шт):
Смотрите на charAt. Символа по нужному индексу нет. Скорее всего в этом месте: s.charAt(temp), потому что temp у вас накручивается в плюс бесконечность))
Вы в while цикле не проверяете длину строки. Отсюда и ошибка.
Код подсчета цифр должен быть таким
public static void main(String[] args) {
String s = "153 asd 654";
int count = 0;
for (int i = 0; i < s.length(); i++) {
char c1 = s.charAt(i);
if (Character.isDigit(c1)) {
count++;
}
}
System.out.println(count);
}
while (Character.isDigit(c1)) {
temp++;
count++;
c1 = s.charAt(temp);
}
Вот здесь есть ошибка, temp - увеличивается "+" бесконечности, вывод такой, что c1 = s.charAt(temp) когда это строка начинает работать кидает "StringIndexOutOfBoundsException", из-за того что у тебя длина строки равно 10, а temp++ увеличивается и индекс становится 10, как ты наверняка знаешь что индексы начинают считать с 0, поэтому нету 10 индекса вот поэтому выдает ошибку.