2011-12-02 541 views
6

我有一个if if语句来检查标记并根据条件对标记进行评分。运算符'&&'不能应用于'bool'和'int'类型的操作数

int marks; 
string grade; 

if (marks>=80 && marks!>100) 
{ 
    grade = "A1"; 
} 
else if (marks>=70 && marks!>79) 
{ 
    grade = "A2"; 
} 

等等.....

然而

,当我编译它,我得到了

操作“& &”不能应用于类型“布尔”和'的操作数int'

帮我解决它。预先感谢。

+2

'!>'?试试'<='。 – cHao

+0

不错的想法,你可以缝迹象做一个操作员。 – Dani

+0

@Dani:这比你想象的更有意义。毕竟,'<='是“小于或等于”,而'!='的意思是“不等于”。 ''>'似乎是“不大于”的自然翻译。只是碰巧它不是有效的C#。 – cHao

回答

3

其他的答案使人们知道,主要的问题是,!>不是运营商。

我想建议,既然你正在测试marks是否在您采取另外的进一步的步骤来格式化你的条件表达式中使用以下模式特定范围内:

if (80 <= marks && marks <= 100) 
{ 
    grade = "A1"; 
} 
else if (70 <= marks && marks <= 79) 
{ 
    grade = "A2"; 
} 

这是一个简单的也许会有微妙的变化,但我认为这使得范围检查意图更加清晰。

12

这是不是一个真正的运营商:

!> 

不大于将<=(小于或等于)

编辑:你想说实际上可能还可以使用表达!运营商。但它会

!(marks > 100) 
+0

不能相信我是多么愚蠢。非常感谢你,这很有用。 – Eppiey

3

你使用了错误的操作,

它必须是。

int marks; 
string grade; 

if (marks>=80 && marks<=100) 
{ 
    grade = "A1"; 
} 
elseif (marks>=70 && marks<=79) 
{ 
    grade = "A2"; 
} 

你也可以做的是

int marks; 
string grade; 

if (marks>=80 && !(marks>100)) 
{ 
    grade = "A1"; 
} 
elseif (marks>=70 && !(marks>79)) 
{ 
    grade = "A2"; 
} 
+0

它的工作。 TIL如何使用'!'在其他情况下。 – Eppiey

+0

谢谢@Eppiey,运营商< or >不能与not一起使用,only =可以与!=一起使用。 –

1
int marks; 
string grade; 

if ((marks>=80) && !(marks > 100)) 
{ 
grade = "A1"; 
} 
else if ((marks>=70) && !(marks > 79)) 
{ 
grade = "A2"; 
} 
相关问题