Rymowanka Java

0

Witam.
Chciałem napisać aplikacje na androida, która po wpisaniu słowa, znajdzie do niego rym.
Plik tekstowy mam w folderze asset.
Problem polega na tym, ze nie wiem co zrobić aby mój kod zadziałał poprawnie, gdyż na razie po kliknięciu buttona, program po prostu przeskakuje do kolejnych pozycji z pliku tekstowego, zamiast wyświetlać słowa jakie powinien.
Chciałem zastosować bardzo proste wyszukiwanie: jeżeli dwie ostatnie litery słowa z pliku tekstowego są takie same jak dwie ostatnie słowa wpisanego przez użytkownika to zwróć slowa z pliku tekstowego.
Chciałem dodać że jestem na poziomie początkującym i dla tego nie zauważam co w moim kodzie jest źle.
oto mój kod:

public class MainActivity extends Activity implements View.OnClickListener {
    InputStream in;
    EditText word;
    BufferedReader reader;
    String line;
    TextView text;
    String rhyme;



    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (TextView) findViewById(R.id.textView1);
        try {
            in = this.getAssets().open("read_asset.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }
        reader = new BufferedReader(new InputStreamReader(in));
        try {
            line = reader.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }

        text.setText(line);
        Button next = (Button) findViewById(R.id.button1);
        next.setOnClickListener(this);
        word = (EditText)findViewById(R.id.et_word);

    }

    public void onClick(View v) {

        Button next = (Button) findViewById(R.id.button1);
        next.setOnClickListener(this);
        word = (EditText)findViewById(R.id.et_word);
        rhyme = word.getText().toString();


        try {
            line = reader.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (line != null || rhyme.substring(rhyme.length() - 2).equals(line.substring(line.length() - 2))) {

            text.setText(line);





        }

    }
}
0

Czy nie powinieneś przypadkiem porównywać końcówek słów a nie ich początków?

0

A czy "rhyme.substring(rhyme.length() - 2" nie oznacza dwóch ostatnich znaków ze stringa rhyme?
Jeśli nie proszę mnie poprawić

0

Nie do końca rozumiem dlaczego nie szukasz rymu w pętli. W jaki sposób reader spozycjonuje się na odpowiednim rymie?
Będziesz klikał do skutku?
Poza tym nie zamykasz reader'a.

https://www.mkyong.com/java/how-to-read-file-from-java-bufferedreader-example/
https://examples.javacodegeeks.com/core-java/io/bufferedreader/read-file-with-bufferedreader-example/

0

Dzięki za podpowiedź. Postaram się coś poczytać i popróbować, ale z tą pętlą, nie bardzo wiem jak się za to zabrać. Rozumiem, że ma to być coś w stylu: jeżeli znajdzie słowo kończące się na jakieś dwie litery, to nie wyświetla od razu takiego słowa, tylko szuka kolejnych, aż dojdzie do końca pliku tak?

0

Jeżeli NIE znajdzie to szuka dalej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1