2016-11-02 6 views
-1

nが奇妙であるかどうかにかかわらず、プログラム出力が出力されるはずです。私は以下のコードを試してみましたが、コードを実行すると、 "配列初期化式を配列型に割り当てることしかできません。代わりに新しい式を使用してみてください"といったエラーが発生します。誰かがコードを修正できますか?前もって感謝します。Cで条件演算子を使用している文字列

これらのルールである:Nが偶数及び6~20を含む範囲であれば、Nが奇数の場合、Nが偶数および2〜5の包含範囲内にある場合 は、奇妙な を印刷し、印刷されない 奇妙な、 Nが偶数と20より大きい場合には、印刷奇妙ない、奇妙な を印刷

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 

class Solution 
{ 
    static void Main(String[] args) 
    { 
     int N = Convert.ToInt32(Console.ReadLine()); 
     string s = {(N%2 !=0 ? "Weird" : (N>20 ? "Not Weird" : ((N > 1 && N <6) ? "Not Weird" : "Weird")))}; 
     Console.writeLine(s); 
    } 
} 
+0

周囲の中括弧を削除します。 – stuartd

+2

三元演算子の乱用をやめてください。 「スマートな」ワンライナーではなく、コードを読みやすくすることに重点を置いてください。 'if'や' else'を使ってコードを読みやすく理解しても、コンパイラはそれをコンパイルして、現在の1行を同じ実行可能コードにコンパイルするだけです。 –

+0

IF文を使用していない理由はありますか? – FakeCaleb

答えて

0

も...あなたはそれが言うようにイニシャライザのアレイを使用している、ので、あなたの誤差があります。

あなたは文字列をインスタンス化すると、{}を使用する代わりに、あなたは完全にその一部を除去し、配列初期化子が文字列のために使用することができますが、あなたが作っている場合にのみ

string s = (N%2 !=0 ? "Weird" : (N>20 ? "Not Weird" : ((N > 1 && N <6) ? "Not Weird" : "Weird"))); 

を使用する必要があり、配列を初期化されますcharアレイ

string s = new char[] { 'H', 'e', 'l', 'l', 'o', }; 
+0

に同意すると私はちょうど興味があったあなたの例@ありがとう –