Поиск буквы в строке с использованием charAt и цикла while Java - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь создать программу, которая видит, находится ли введенная пользователем буква в строке «привет», и, если это так, выведите ее в строке и в ее месте.Ошибка «неверные типы операндов для двоичного оператора»

String str = "hello", guess;
int testing = 0;
Scanner scan = new Scanner(System.in);

System.out.print("Enter a letter: ");
guess = scan.nextLine(); // Enters a letter

// finds the letter in the string
while (str.charAt(testing) != guess && testing != 6) {
    testing++;       // Continues loop
}

//prints where letter is if it is in the string
if (str.charAt(testing) == guess)
    System.out.println("The letter is at "+testing);
else
    System.out.println("Could not find that letter.");

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018
String str = "hello";
        char guess;
        int testing = 0;
        Scanner scan = new Scanner(System.in);

        System.out.print("Enter a letter: ");
        guess = scan.next().charAt(0); // Enters a letter

        // finds the letter in the string
        while (str.charAt(testing) != guess && testing != 5) {
            testing++;       // Continues loop
        }
        //prints where letter is if it is in the string
        if (str.charAt(testing) == guess)
            System.out.println("The letter is at "+(testing+1));
        else
            System.out.println("Could not find that letter.");

Я пробовал это, и это работает.Обратите внимание, что есть два "l", поэтому он покажет только позицию первого

0 голосов
/ 24 ноября 2018

Вы пытаетесь сравнить char с String.

Сравнить char с char:

while (str.charAt(testing) != guess.charAt(0) && testing != 6)

и

if (str.charAt(testing) == guess.charAt(0))

Я бы также изменил ваше условие остановки, чтобы избежать StringIndexOutOfBoundsException, когда совпадений не найдено:

while (testing < str.length () && str.charAt(testing) != guess.charAt(0))

и

if (testing < str.length () && str.charAt(testing) == guess.charAt(0))
...