このメソッドは、一致する部分文字列(大文字小文字を区別しない)を含むものの名前を表示し、一致する名前をJTextAreaに出力します。配列として格納されている入力ファイルから名前を検索します。しかし、ユーザーがファイルに存在しないものをタイプしているときに「結果が見つかりません」と表示したい場合は、存在する名前を含め、すべてのものに対して「結果が見つかりません」と表示されます。私が取る場合ifおよびelseステートメントの使用
else
displayArea.append("\n No results found");
ステートメント私の方法は再び正しく動作し、正しい情報を表示します。では、if文の動作を停止せずに、「結果が見つかりません」と表示させるにはどうすればよいですか?
private void match(String targetSubstring)
{
displayArea.setText("");
displayArea.append("FIND RESULTS for: " + targetSubstring);
displayArea.append("\n");
displayArea.append("\n Name Best Decade");
displayArea.append("\n--------------- ---------------");
targetSubstring = targetSubstring.toUpperCase();
for (int i = 0; i < namesArray.length; i++) {
String theName = namesArray[i].getName();
if (theName.toUpperCase().contains(targetSubstring))
{
displayArea.append("\n" + namesArray[i].getName() + "\t" + namesArray[i].bestDecade());
}
else
displayArea.append("\n No results found");
}
}
いいえ、ループ内に論理エラーがあり、部分文字列と一致しない配列内の各要素に対して「結果が見つかりません」と表示されます。コードは完全に正しいわけではありません –