2016-11-10 3 views
1

これは少しばかげているかもしれませんが、本当に私を捕まえました。どちらかの条件を論理ORで指定するか、Javaで

charStringに単語「Hi」が含まれていない場合は、エラーをスローしたいと思います。

だから私は今

if(!charString.contains("Hi")) 
    /// throw error on screen 

を書いて、要件が変更されました。 charStringに "Hello"が含まれていない場合は、エラーをスローしたいと思います。

ので、要件は、私はエラーをスローしないはずであるcharStringいずれかこんにちはこんにちはが含まれている場合

だから私は書いた:

if(!charString.contains("Hi") || !charString.contains("Hello")) 
    /// throw error on screen 

への私の恐怖、私は上記のコードを書いて私はひどく間違っていることに気づいた。どのように私はそれを単一のif文で書くことができますか?

要件は次のとおりです。

「charStringがHiまたはこんにちはいずれかが含まれている場合は、エラーをスローしません」

+2

あなたは '||'ではなく '&&'が必要です。 – EJP

+0

あなたはあなた自身言った: "私も** **エラーをスローしたい..."。それはあなたが '&&'を望むことを意味します。 – QBrute

答えて

3

非常に明確な方法(コメントが必要で余分ブロックを犠牲にしては)

if (charString.contains("Hi") || charString.contains("Hello")){ 
    // do nothing 
} else { 
    // throw an error 
} 

これはあまり眉調達

if (!(charString.contains("Hi") || charString.contains("Hello"))){ 
    // throw error 
} 

と同等であるかを記述することです(De Morganの法則のため)

if (!charString.contains("Hi") && !charString.contains("Hello"))){ 
    // throw error 
} 
+0

私は眉毛を少なくする方が好きです – SimpleGuy

1

私は理解しているように、あなたはそれがHiが含まれていない場合にエラーをスローするようにしたいですANDはHelloを含まない。

if(!charString.contains("Hi") && !charString.contains("Hello")) 

あなたの前のコードはでした:

文字列は「こんにちは」が含まれていないか、文字列「こんにちは」スローエラーが含まれていない場合。これは、少なくとも1つの文字列の運が原因でエラーが発生したことを意味します。

のは、平易な英語であなたの流れを説明してみましょう:我々はまた、否定使用することができます

IF charString contains "Hi" or "Hello" (so is a way of saying "Welcome") 
    proceed 
ELSE 
    throw the error. 

:Javaでは

IF charString doesn't contain one of "Hi" or "Hello" (so is a way of saying "Welcome") 
    throw the error 
ELSE 
    proceed. 

を、彼らは次のようになります。

if (charString.contains("Hi") || charString.contains("Hello")) { 
    //it's good 
} else { 
    //it's bad 
} 

または第二のケース:

NOT(charString contains Hi or charString contains Hello) 
if (!(charString.contains("Hi") || charString.contains("Hello"))) { 
    //it's bad 
} else { 
    //it's good 
} 
関連する問題