0

レベルが SQLite データベース内に保持されているかどうかをチェックする関数を作成しようとしています。そうであり、新しいスコアが表のスコアよりも大きい場合は、それを編集したいと思います。正常に動作するように見える編集機能と、チェック対象のレベルが存在しない場合に呼び出されるデータベースへの追加機能を作成しました。

これが私の機能です

    void isHighScore(String level, int score) {
    List<String> scores = getHighScore();
    List<String> levels = getHighScoreLevel();

    for (int i = 0; i < levels.size(); i++) {

        int scoreVal = Integer.parseInt(scores.get(i));
        String levelVal = levels.get(i).toString();

        if (levelVal == level && scoreVal < score) {
            try {
                editScore(level, score);
            } catch (Exception e) {}
        }
    }
    if (!levels.contains(level)) {
        createHighScoreEntry(level, score);
    }
}

これまでのところ、エントリの作成関数のみが機能しているため、私の主な問題は for ループにあります。どんな助けでも大歓迎です。

4

1 に答える 1

0

文字列が実際に等しいかどうかを確認しないため、== を使用して文字列を比較するべきではありません。使用する必要があるのは、 String.equals() または String.compare() または String.contains() です

String.equals() は、それらが等しいかどうかを確認します。その場合は true を返します

String.compare() は、それらが等しいかどうかを確認します。一致する場合は 0 を返し、そうでない場合は違いに応じて -1 または 1 を返します。

String.contains() はより一般的で、true を返す場合、単語、文字、またはフレーズが文字列に含まれているかどうかを確認します。

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.htmlの機能については、このサイトを参照として使用できます。

于 2013-02-09T16:14:16.900 に答える