2016-11-02 35 views
-1

我的程序输出应该打印,不管n是否奇怪。我尝试了下面的代码,但是当我运行代码时,它抛出了一个错误,如“只能使用数组初始化表达式来分配给数组类型,尝试使用新的表达式”。有人可以纠正代码。提前致谢。在c中使用条件运算符的字符串#

这些是规则: 如果N是奇数,则打印奇怪 如果N是偶数和在2至5的包容范围内,打印不奇怪 如果N是偶数,并在6〜20的包容范围内,打印奇怪 当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'并且让你的代码易于阅读和理解,编译器也足够聪明,可以将你的代码和你当前的单行代码编译成相同的可执行代码。 –

+0

有没有理由不使用IF语句? – FakeCaleb

回答

0

你的错误是因为,嗯......你正在使用初始化器,因为它说的阵列。

当实例化的字符串,利用{}正在初始化一个数组,相反,您应完全除去该部分,并使用

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

阵列初始化剂可用于串,但是只有当要制作char array

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

感谢您的示例@Alfie –