Member 13458860 Ответов: 2

Почему я не получаю положение моей струны?


Я заставляю пользователя ввести 5 слов, а затем прошу его выбрать тип в одной из строк. Если они введут одну из строк, она выведет ее положение. Если нет, то он скажет: "слово не найдено". Когда я набираю слово для поиска, оно всегда дает мне "слово не найдено".
Я пробовал несколько способов с циклом for и циклом while, но получал один и тот же результат.

Что я уже пробовал:

import java.util.Scanner;
public class App {

    public static void main(String[] args) {
        String[] position = new String[5];
        Scanner scan = new Scanner(System.in);
        int i = 0;
        String word = "";
        String searchWord = "";
        boolean done = false;
        
        
        for(i = 0; i < position.length; i++)
        {
            System.out.print("Enter a word: ");
            word = scan.nextLine();
        }
//        System.out.println("Search a string:");
//        searchWord = scan.nextLine();
       
        
        while (!done)
        {
            System.out.println("Search a string:");
            searchWord = scan.nextLine();
        
            //if (word.contains(searchWord))
            if(word.equalsIgnoreCase(searchWord))
            {
                System.out.println(i);
                done = true;
            }
            else 
            {
                System.out.println("Word not found");
                break;
            }
        }
        /*for(i = 0; i < position.length; i++)
        {
            if (searchWord.contains(word))
            {
                System.out.println(position[i]);
            }    
            else 
            {
                System.out.println("Word not found");
                break;
            }
        } */ 
        
    }
    
}

2 Ответов

Рейтинг:
0

Richard MacCutchan

Ваш первоначальный ввод - это всего лишь одно слово, но я думаю, что вы должны хранить пять слов в памяти. String[] position массив. Затем вам нужно сравнить поисковое слово с каждой записью в массиве, чтобы определить, каково значение позиции. Что-то вроде:

        for(i = 0; i < position.length; i++)
        {
            System.out.print("Enter a word: ");
            position[i] = scan.nextLine();
        }
//
// ...
//
        for(i = 0; i < position.length; i++)
        {
            if(position[i].equalsIgnoreCase(searchWord))
            {
                System.out.println("Word found at: " + i);
                break;
            }
        }
        if (i == position.length)
        {
            System.out.println("Word not found");
        }


Рейтинг:
0

Patrice T

Вы только забыли дать нам образец ввода с ожидаемым выходом и фактическим выходом.
В промежутке используйте отладчик и убедитесь, что все идет так, как вы ожидаете

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.