Я видел решение этого вопроса здесь, но код людей отличается от моего. Я просто хочу знать, что я делаю неправильно. Я очень новичок в программировании и отчаянно хочу быть хорошим.Рекурсия, чтобы найти количество вхождений заданного символа в строке
Вопрос: (вхождения заданного символа в строке) Написать рекурсивный метод, который находит число вхождений заданного символа в строке, используя следующий заголовок:
public static int count(String str, char a)
Например: count("Welcome", 'e')
возвращается 2
. Напишите тестовую программу, которая предложит пользователю ввести строку, за которой следует символ, и отобразит количество вхождений символа в строке.
Проблема с моим кодом:
Исключение в потоке "основной" java.lang.StringIndexOutOfBoundsException: индекс строки из диапазона: -1
Мой код:
import java.util.Scanner;
public class Exercise18_10{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("Please enter a string");
String str = input.next();
System.out.println("Please enter a character");
char car = input.next().charAt(0);
int x = count ("welcome", 'e');
System.out.println("The number of character " +car + " in string " +str + " = "+ x);
}//main
public static int count(String str, char a){
int ct = 0;
if(str.length()>0)
if(str.charAt(0) == a)
ct ++;
count(str.substring(1),a);
return ct;
}
}
Помогите пожалуйста, что я делаю неправильно?
Пожалуйста, научитесь форматировать свой код. – nhouser9
Одна из проблем заключается в том, что вы выбрасываете результат своего рекурсивного вызова 'count', а не добавляете его в' ct'. –
Я настоятельно рекомендую вам привыкнуть ** ВСЕГДА ** используя символы '{' и '}' для ветки или цикла. Если вы помещаете символы '' '' '' '' '' '' в соответствующие места в вашем коде здесь, я считаю, что вы сразу увидите, в чем проблема. –