2011-03-23 120 views
1

我見過的其他問題,但答案似乎很複雜,無法理解他們,所以我的繼承人代碼「布爾」:錯誤無法隱式轉換類型「字符」到

注:我是新到c莎爾的語言

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Input_Program 
{ 
    class Program 
    { 
     private static void Main() 
     { 
      Console.WriteLine("Welcome to my bool program!"); 
      Console.WriteLine("Input a NON capital y or n when told to."); 


      char Y; 
      char N; 

      if(Y = 'y') 
      {} 
     } 
    } 
} 

感謝 感謝

+0

如果(Y ==「Y」){} – 2011-03-23 01:48:37

回答

7

你缺少等號:if(Y == 'y')

您現在的方式是將值'y'指定爲Y,這也是賦值表達式的結果。這是一個char,而編譯器期望得到一個bool的結果。

更新:

當然作爲thephpdeveloper說,編譯器也會堅持讓你從中讀取之前的值賦給Y。所以:

char Y = 'y'; 
char N = 'n'; 

if(Y == 'y') 
{} 
+0

作爲一個快速的解釋;如果你說if(Y ='y'){},那麼你是有效的如果(Y)失敗,因爲Y是一個字符,if()需要一個布爾值。只是我想多瞭解一下錯誤:) – Suroot 2011-03-23 01:50:51

+0

謝謝,如果我可以接受你所有的答案,我會:) – unknown 2011-03-23 01:52:58

+0

現在它說使用無符號的局部變量Y. – unknown 2011-03-23 01:55:02

2

單個=是分配。您正在尋找的是平等運營商,==

+0

謝謝!回答 – unknown 2011-03-23 01:52:23

1

在您所提供的代碼,

(Y = 'y') 

評估是'y'因爲新的分配將始終以成功分配結果返回。因此,在if語句中,'y'無法轉換爲布爾值進行比較。

=是一個賦值操作符。要比較兩個值,應該使用==

除此之外,你需要爲了使用(char)Console.Read()該程序從用戶輸入的字符爲:

char Y = (char) Console.Read(); 
if(Y == 'y'){ 
    Console.WriteLine('You pressed YES.'); 
}else{ 
    Console.WriteLine('You probably pressed NO.'); 
} 
+0

謝謝,我不知道 – unknown 2011-03-23 01:53:27

相關問題