2011-12-02 21 views
6

Mam instrukcję if if do sprawdzania znaczników i oceniania ocen zgodnie z warunkiem.Operatora "&&" nie można zastosować do argumentu typu "bool" i "int"

int marks; 
string grade; 

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

i tak dalej .....

Jednak, kiedy skompilować to mam

Operatora & & "nie może być stosowany do argumentu typu 'bool' i ' int '

pomóż mi to naprawić. thanks z góry.

+2

'!>'? Spróbuj '<='. – cHao

+0

ładne myślenie, że można po prostu zszyć znaki, aby operator. – Dani

+0

@Dani: To ma większy sens, niż myślisz. W końcu '<=' jest "mniejsze lub równe", a '! =' Oznacza "nie równe". '!>' wydaje się być naturalnym tłumaczeniem słowa "nie większy niż". Tak się składa, że ​​nie jest to poprawne C#. – cHao

Odpowiedz

3

Inne odpowiedzi sprawiły, że wiadomo, że głównym problemem jest to, że !> nie jest operatorem.

chciałbym sugerować, że skoro testujesz czy marks leży w poszczególnych zakresach, które można podjąć dodatkową kolejny krok do formatowania wyrażeń warunkowych użyć następującego wzoru:

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

To proste i może subtelne zmiany, ale myślę, że to sprawia, że ​​intencja kontroli zasięgu jest o wiele jaśniejsza.

12

To nie jest prawdziwy operator:

!> 

nie większej niż byłoby <= (mniej niż lub równy)

EDIT: Co próbujesz powiedzieć faktycznie mogła być wyrażona za pomocą ! operator. Ale byłoby

!(marks > 100) 
+0

Nie mogę uwierzyć, jak głupio jestem. dziękuję bardzo. To działa. – Eppiey

3

użyłeś niewłaściwego operatora,

musi być.

int marks; 
string grade; 

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

Ponadto można zrobić, to

int marks; 
string grade; 

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

zadziałało. TIL, jak używać "!" w innym przypadku. – Eppiey

+0

Dzięki @Eppiey, operator < or > nie można używać z nie, tylko = można używać z! =. –

1
int marks; 
string grade; 

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