3

過去問題集の問題集を解いています。質問の 1 つはブール型です。

名前が Thomas でない場合は false を返し、そうである場合は true を返します。

これが私のコードです:

public class QuestionTwo
{   
String name;

public static void main(String [] args){

    System.out.println(nameTest("Thomas"));   
}
public static boolean nameTest(String name){
    if(!name.equals("Thomas"));
    return false; 
 }
}

ご覧のとおり、私のコードは true を返すはずですが、false を返し続けますか? 私のコードのどこが間違っていると思われるか教えてもらえますか? 私はまだ学んでいるので、見つかったばかげたエラーを許してください。どうもありがとう。

4

5 に答える 5

6

の末尾のセミコロンを削除しif statementます。

 if(!name.equals("Thomas"))

また、次のequals testようにすることもお勧めします。

 if(!"Thomas".equals(name))

この場合、nameがnullの場合、 NPEは取得されません。

于 2013-03-12T11:00:09.390 に答える
6

セミコロンを削除

    if(!name.equals("Thomas")) return false; 

あなたが書いたように、それは2つの別々のステートメントです。まず、name が Thomas と等しくない場合は何もしません。次に、false を返します。

于 2013-03-12T10:59:56.553 に答える
3

[メソッド] は、名前が Thomas でない場合は false を返し、そうである場合は true を返す必要があります。

まったく必要ありませんif

 public static boolean nameTest(String name){
     return name.equals("Thomas");
 }

一般に、式はs や/booleanで囲まないと読みやすくなります。returnまたはfrom a のブランチが表示されるたびに、ステートメントを使用せずに書き直すことを検討する必要があります。if== true== falsetruefalseifif

于 2013-03-12T11:03:48.810 に答える
1

if ステートメントと return ステートメントの後にセミコロンを置くと、それらは別のステートメントになります。コードは次のようになります。

public class QuestionTwo {   
    String name;

    public static void main(String [] args){
        System.out.println(nameTest("Thomas"));   
    }

    public static boolean nameTest(String name){
        if(!"Thomas".eqauals(name)) {
            return false;
        }
        return true;
    }
}
于 2013-03-12T11:02:44.770 に答える
1

最善の方法は、名前が Thomas と等しいかどうかを正確に返すことです。if ステートメントを実行する必要はありません

public static boolean nameTest(String name){
  return name.equals("Thomas"); 
}

他の提案された解決策:

if(!name.equals("Thomas")) return false;

名前が Thomas でない場合は戻り値がないため、コンパイルされません。

于 2013-03-12T11:04:10.773 に答える