public class StringFind {
/** findLetter looks for a letter in a String
* @param String letter to look for
* @param String text to look in
* @return boolean true if letter is in text
* After running the code, change this method to return
* an int count of how many times letter is in the text.
*/
public int findLetter(String letter, String text) {
int count = 0;
for(int i=0; i < text.length(); i++) {
if (text.substring(i, i+1).equalsIgnoreCase(letter)) {
count = count++;
}
}
return(count);
}
public static void main(String args[]) {
StringFind test = new StringFind();
String message = "Apples and Oranges";
String letter = "p";
System.out.println("Does " + message + " contain a " + letter + "?");
}
}
В этом коде есть ошибка, и я не знаю, как ее исправить. Этот код должен возвращать количество раз, когда буква появляется в сообщении, которое вводит пользователь. Я изо всех сил пытался понять, что мне нужно изменить без ошибок.
Первая ошибка в findLetter
, где у вас есть
count = count++; // this is effectively count = count;
Которые должны быть
count++; // or count = count + 1;
Тогда ты не звонишь findLetter
. Измените текущий println
на что-то вроде
System.out.printf("%s contains %s %d times.%n", message, letter,
test.findLetter(letter, message));
Без других изменений я получаю
Apples and Oranges contains p 2 times.
Чтобы завершить ответ, данный Эллиоттом Фришем, ваша функция имеет первый параметр неправильно, это символ, а не строка, и, учитывая это, вам нужно изменить способ поиска символа в строке, используя функцию charAt, чтобы сделать это более простой (https://www.w3schools.com/java/ref_string_charat.asp). Это не обязательное изменение, но я думаю, что это имеет больше смысла.
public class StringFind {
/** findLetter looks for a letter in a String
* @param String letter to look for
* @param String text to look in
* @return boolean true if letter is in text
* After running the code, change this method to return
* an int count of how many times letter is in the text.
*/
public int findLetter(char letter, String text)
{
int count = 0;
for(int i=0; i < text.length(); i++)
{ if (text.charAt(i) == letter)
count++;
}
return(count);
}
public static void main(String args[])
{
StringFind test = new StringFind();
String message = "Apples and Oranges";
Character letter = 'p';
System.out.printf("%s contains %s %d times.%n", message, letter, test.findLetter(letter, message));
}
}
Привет @BenBerinsky, твой код не вызывает метод
findLetter
?