Меня попросили создать программу, которая запрашивает у пользователя два ввода, оба из которых должны быть сохранены в виде строк. Первый ввод может быть одним или несколькими словами, а второй ввод должен быть одним единственным символом. После того, как пользователь введет оба ввода, программа должна посчитать, сколько раз, если таковые имеются, единственный чартер появляется в первой строке. После завершения итерации первой строки программа должна вывести количество экземпляров второй строки. Пример:
"В тесте есть 1 вхождение 'e'."
Программа должна использовать цикл while и строковые значения. Это решение, которое у меня есть на данный момент, согласно параметрам, установленным профессором
public static void main(String[] args) {
String inputEntry; // User's word(s)
String inputCharacter; // User's sole character
String charCapture; // Used to create subtrings of char
int i = 0; // Counter for while loop
int charCount = 0; // Counter for veryfiying how many times char is in string
int charCountDisplay = 0; // Displays instances of char in string
Scanner scan = new Scanner(System.in);
System.out.print("Enter some words here: "); // Captures word(s)
inputEntry = scan.nextLine();
System.out.print("Enter a character here: "); // Captures char
inputCharacter = scan.nextLine();
if (inputCharacter.length() > 1 || inputCharacter.length() < 1) // if user is not in compliance
{
System.out.print("Please enter one character. Try again.");
return;
}
else if (inputCharacter.length() == 1) // if user is in compliance
{
while( i < inputEntry.length()) // iterates through word(s)
{
charCapture = inputEntry.substring(charCount); // Creates substring of each letter in order to compare to char entry
if (charCapture.equals(inputCharacter))
{
++charCountDisplay;
}
++charCount;
++i;
}
System.out.print("There is " + charCountDisplay +
" occurrence(s) of " + inputCharacter + " in the test.");
}
}
Эта итерация имеет ошибку. Вместо того чтобы считать все экземпляры переменной inputCharacter, она считает до одного, независимо от того, сколько экземпляров появилось в строке. Я знаю, что проблема в этой части кода:
while( i < inputEntry.length()) // iterates through word(s)
{
charCapture = inputEntry.substring(charCount); // Creates substring of each letter in order to compare to char entry
if (charCapture.equals(inputCharacter))
{
++charCountDisplay;
}
++charCount;
++i;
}
Я просто не могу точно определить, что я делаю неправильно. Мне кажется, что переменная charCountDisplay обнуляется после каждой итерации. Разве этого не следует избегать, объявляя переменную в самом начале? ... Я один растерянный парень.