とにかくこの声明を修正する方法はありますか
if (sAwnser == ("hello" || "Hello" || "hi" || "Hi" || "hey" || "Hey" || "Hay" || "hey"))
{
}
エラーが発生します
Operator '||' cannot be applied to operands of type 'string' and 'string'
誰かがそれを助けることができれば、それは大歓迎です
あなたができる非常に多くの比較を避けるために
var list = new string[] {"hello", "Hello", "hi", "Hi", "hey", "Hey", "Hay", "hey"};
if (list.Contains(answer))
{
}
毎回最初の変数を明示的に参照する必要があります。
sAwnser == "hello"
ブール値を返します。ブール値を文字列と比較することはできません。
あなたができることは、コレクションを作成し、それにすべての個別の文字列を追加することです。その後、その上で使用できます.Contains()
。
まず第一に、あなたの問題の根本を指摘したいと思います。
条件付き OR 演算子 (||) は、bool オペランドの論理 OR を実行します。
したがって、演算子string
で値を使用することはできません。||
両方のオペランドはboolean
値でなければなりません。
Enumerable.Any
同様にLINQを使用できます。
string[] array = new string[] {"hello", "Hello", "hi", "Hi", "hey", "Hey", "Hay", "hey"};
if (array.Any(sAwnser.Equals))
{
// Your sAwnser is equal one of your array values.
}
if (sAwnser == "hello" || sAwnser == "Hello" || sAwnser == "hi" || sAwnser == "Hi" || sAwnser == "hey" || sAwnser =="Hey" || sAwnser =="Hay" || sAwnser =="hey"))
{
}
または、チェックを行う別の関数を書くことができます
private bool CheckInput(String input)
{
String[] sAwnser = {"hello", "Hello", "hi", "Hi", "hey", "Hey", "Hay", "hey"};
for (int i = 0; i < sAwnser.Length; i++)
{
if (sAwnser[i].Equals(input));
return true;
}
return false;
}
実際にここでできることは次のとおりです。
if ((sAwnser == "hello") || (sAwnser =="Hello") || (sAwnser =="hi") || (sAwnser =="Hi") || (sAwnser =="hey") || (sAwnser =="Hey") || (sAwnser =="Hay") || (sAwnser =="hey"))
{
//insert code here
}
他の提案と比較して、これはコーディングする最も簡単な方法かもしれませんが、これは良い習慣ではないと考える人もいるかもしれません。とにかく、コーディングを楽しんでください。
これらすべての値を含む const 文字列を宣言することもできます。確認する必要があるたびに、contains メソッドを呼び出すだけです。
private const string test = "HellohelloHihiHeyhey";
static void Main(string[] args)
{
string UserInput = Console.ReadLine();
if (test.Contains(UserInput))
{
Console.WriteLine("success!!");
}
}