2016-11-02 36 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 –