C# 错误 ;1和x9;无法隐式转换类型';char';至';布尔';
我见过其他问题,但答案似乎很复杂,无法理解,因此我的代码如下: 注意:我不熟悉c语言C# 错误 ;1和x9;无法隐式转换类型';char';至';布尔';,c#,.net,C#,.net,我见过其他问题,但答案似乎很复杂,无法理解,因此我的代码如下: 注意:我不熟悉c语言 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Input_Program { class Program { private static void Main() { Console.WriteLin
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')
{}
}
}
}
谢谢
谢谢您缺少一个等号:
if(Y=='Y')
按照现在的方式,它将值'y'
赋值给y
,这也是赋值表达式的结果。它是一个char
,而编译器需要一个bool
结果
更新:
当然,正如HPDeveloper所说,编译器也会坚持要求您在读取之前为Y
赋值。因此:
char Y = 'y';
char N = 'n';
if(Y == 'y')
{}
缺少等号:
if(Y=='Y')
按照现在的方式,它将值'y'
赋值给y
,这也是赋值表达式的结果。它是一个char
,而编译器需要一个bool
结果
更新:
当然,正如HPDeveloper所说,编译器也会坚持要求您在读取之前为Y
赋值。因此:
char Y = 'y';
char N = 'n';
if(Y == 'y')
{}
单个
=
用于分配。您要查找的是相等运算符,=
单个=
用于赋值。您要查找的是相等运算符,==
在您提供的代码中
(Y = 'y')
计算结果为'y'
,因为新分配将始终作为成功分配的结果返回。这样,'y'
就不能在if
语句中转换为布尔值进行比较
=
是赋值运算符。要比较两个值,应使用==
除此之外,您还需要使用(char)Console.Read()
,以便程序从用户输入中读入字符:
char Y = (char) Console.Read();
if(Y == 'y'){
Console.WriteLine('You pressed YES.');
}else{
Console.WriteLine('You probably pressed NO.');
}
在您提供的代码中
(Y = 'y')
计算结果为'y'
,因为新分配将始终作为成功分配的结果返回。这样,'y'
就不能在if
语句中转换为布尔值进行比较
=
是赋值运算符。要比较两个值,应使用==
除此之外,您还需要使用(char)Console.Read()
,以便程序从用户输入中读入字符:
char Y = (char) Console.Read();
if(Y == 'y'){
Console.WriteLine('You pressed YES.');
}else{
Console.WriteLine('You probably pressed NO.');
}
作为一个快速的解释;如果你说if(Y='Y'){},那么你实际上是在做if(Y),它失败了,因为Y是一个字符,if()需要一个布尔值。虽然我会对错误有更多的了解:)现在它说使用无符号局部变量Y。这是因为您没有为
Y
赋值。你的行chary
仅声明变量,但变量为空;如果你说if(Y='Y'){},那么你实际上是在做if(Y),它失败了,因为Y是一个字符,if()需要一个布尔值。虽然我会对错误有更多的了解:)现在它说使用无符号局部变量Y。这是因为您没有为Y
赋值。你的行chary
仅声明变量,但变量为空。