2017-02-20 11 views
-1

は、だから私はendsWith()がなぜ||オペレーター?

String x = "[email protected]" // <--- it's .com 

if (!x.trim().toUpperCase().endsWith(".COM")) 
{ 
    System.out.println("Your E-mail is missing a \".com\""); 
} 

else 
{ 
    System.out.println("Welcome, " + x); 
} 

を試してみましたが、私は他の引数を含むしようとすると、それは完全に罰金

を働いていた。しかし||オペレータは、それはすべての

String x = "[email protected]"; // <--- now it's .edu 

if (!x.trim().toUpperCase().endsWith(".COM") || !x.trim().toUpperCase().endsWith(".EDU")) 
{ 
    System.out.println("Your E-mail is missing a \".com\""); 
} 

else 
{ 
    System.out.println("Welcome, " + x); 
} 

では動作しません、私はif文で

|| !x.trim().toUpperCase().endsWith(".EDU"); 

を含めて以来、私はあなたがしようとしている場合、私は

+2

これらの2つの条件はお互いに排他的です。あなたの電子メールが '' .COM''と '' .EDU''の両方で終わることは決してないので、チェックは常に真です。 – f1sh

+1

ここには論理的な問題があります。 – AxelH

+2

'||'は、あなたが望むものは何で、どちらは '&& 'です – niceman

答えて

0

||の代わりに&&が必要です。あなたの意図を正しく読んでいる場合は、電子メールアドレスが.comまたは.eduで終わることを確認したいと考えています。代わりに、条件付きで終了しないかどうかを調べます。 .comで終わると仮定しましょう。またはの最初の部分はfalseになり、2番目の部分が評価されます。 "foo.com".toUpperCase().endsWith(".edu")がfalseの場合、!"foo.com".toUpperCase().endsWith(".edu")が真であるため、false || !"foo.com".toUpperCase().endsWith(".edu")が真であるため、条件全体がtrueと評価され、ifブロックを入力します。

+0

ああ、||の代わりに&&を使わなければならないのか分からなかったので、Javaは変です。 –

+1

@DannyDomazed - これはJavaが奇妙なこととは関係ありません。これはちょうど良い古くからのブーリアンロジックです。 –

+0

@ IanMcLaird :-( –

0

をプリントアウトし、エラーを取得しておきます電子メールは

String x = "[email protected]"; 
if (!(x.trim().toUpperCase().endsWith(".COM") || x.trim().toUpperCase().endsWith(".EDU"))){ 
System.out.println("Your E-mail is missing a \".com\""); 

}

01として、.comや.eduの使用のいずれかであるかどうかを確認します
関連する問題