0

私はJavaに非常に慣れていないため、常に些細な間違いを犯し続けています。これは単なる別のものだと確信していますが、この概念を理解するのに本当に苦労しています. これが私のコードが今どのように見えるかです。

public void lstMatching(String searchString)
{
    for(String filename : files) {
        if(filename.contains(searchString)) {
            System.out.println(filename);
        }
        else{
            boolean invalid = true;
        }
    }
    if(invalid){
            System.out.println("Your search did not match any results.");
    }
}

私がやろうとしているのは、searchStringが単一のファイル名と一致しない場合にエラーメッセージを出力する方法を取得することです。「無効な」変数が間違っているというエラー メッセージが何度も表示されるのはなぜですか?

4

5 に答える 5

1

invalidループの前に変数を宣言する必要があります。また、論理を逆にしたようです。一致する必要があるのは 1 つだけなので、一致が見つかったら変数を更新する必要があります。

public void lstMatching(String searchString)
{
    boolean invalid = true;
    for(String filename : files) {
        if(filename.contains(searchString)) {
            System.out.println(filename);
            invalid = false;
        }
    }
    if (invalid){
            System.out.println("Your search did not match any results.");
    }
}
于 2015-10-06T08:34:53.657 に答える
1

「無効な」変数がelse部分で宣言されています。ファイルが見つかった場合、「無効な」変数は else 部分に入らないため宣言されません)。そして、その変数を使用して、ファイルが見つかったかどうかを確認しようとしています。

public void lstMatching(String searchString)
{
    boolean invalid = false;

    for(String filename : files) {
        if(filename.contains(searchString)) {
            System.out.println(filename);
        }
        else{
            invalid = true;
        }
    }
    if(invalid){
            System.out.println("Your search did not match any results.");
    }
}
于 2015-10-06T08:40:03.547 に答える
0

次の点に注意してください。

  • invalidスコープ内でのみ認識されるため、スコープ外のステートメントelseで使用しようとすると、認識されません。詳細な説明については、Java™ チュートリアル - 変数を参照してください。ifelse

  • コードを簡素化できます。

    public void lstMatching(String searchString)
    {
        boolean valid = false;
        for (String filename : files) {
            if (!filename.contains(searchString)) {
                // if logic here
            } else {
                // print
            }
        }
    }
    
于 2015-10-06T08:38:13.167 に答える