2011-12-02 528 views
6

if else if文でマークをチェックし、条件に従ってマークをグレードします。私はそれが私が得たコンパイル演算子 '&&'は 'bool'型と 'int'型のオペランドには適用できません

int marks; 
string grade; 

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

など.....しかし

オペレータ「& &は、」タイプ「ブール」と 'のオペランドに適用することはできませんint '

私はit.thanksを事前に修正するのに役立ちます。

+2

'!>'? '<='を試してください。 – cHao

+0

あなたは単にオペレータを作るために看板を縫うことができる素晴らしい考え。 – Dani

+0

@Dani:あなたが考えるよりも理にかなっています。結局、 '<='は「以下」であり、 '!='は「等しくない」ことを意味します。 '!>'は、「より大きくない」という自然な翻訳のようです。ちょうどそれが有効なC#ではないことが起こります。 – cHao

答えて

3

他の回答には、それが主な問題は、!>は演算子ではないということであることが知られてきています。

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

それは簡単です:私はあなたが次のパターンを使用するように条件式をフォーマットするための追加のさらなるステップを取る特定の範囲内でmarksかどうか嘘をテストしているので、ことを示唆したい

おそらく微妙な変更かもしれませんが、範囲チェックの意図がはるかに明確になると思います。

12

本当のオペレータではありません。何が言いたいのは、実際にも使用して表現することができます

!> 

より大きくないが<=(以下)

EDITだろう!オペレーター。しかし、それはあなたがそれがなければなりません間違っているオペレータ、

を使用していた

!(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

ありがとう@エッピエー、演算子< or >は使用できません。=のみ!=とともに使用できます。 –

1
int marks; 
string grade; 

if ((marks>=80) && !(marks > 100)) 
{ 
grade = "A1"; 
} 
else if ((marks>=70) && !(marks > 79)) 
{ 
grade = "A2"; 
} 
関連する問題