[C#] Prüfen ob Integer Zahl a,b,c,d,e ist

Gast #1372875
Lesenswert?

Hallo,

ich habe hier ein Problem.

Ich muss prüfen ob der Integer i einer der Zahlen

7,12,16,18,19,37 und mehr   ist.

Probiert habe ich es hiermit:

if (i == 7 | 12 | 16 ...)
{
...
}

hier kommt aber ein Kompilerfehler


Wie muss diese Prüfung aussehen??


MFG Max
#1372909
Lesenswert?

Wenn es viele Zahlen sind, packst du sie am besten in eine Liste/ein 
HashSet und prüfst mit Contains.

HashSet ist hierfür besser geeignet, gibt es allerdings erst ab 3.5 
(oder 3.0?)
1
            //.Net 3.5:
2
            HashSet<int> nums = new HashSet<int>() {7,12,16};
3

4
            //.Net 2.0:
5
            //List<int> nums = new List<int>() { 7, 12, 16 };
6
            if(nums.Contains(i)) { 
7
                ...
8
            }

Dein Code sähe richtigermasen so aus, wird aber bei vielen Zahlen 
schnell unübersichtlich:
1
if (i == 7 || i == 12 || i == 16 ...)
2
{
3
...
4
}
Gast #1373563
Lesenswert?

wo ist dann das problem?
1
for(int i=0; i<N; i++)
2
   if(!is_i_in(1,2,3,4))
3
       do_what_you_want();

in python könnte man buildin set Mengen benutzen
1
lst=[1,2,3,6,7,8,9,0,9]
2
if not(set([6,7,9]) and set(lst)):
3
    do_what_you_want()

@Peter
echt geht das in Turbo Pascal?

Sicher geht aber das nicht ;)
if i in [1,2,"hello",3.0]:

die liste ist heterogen
#1374200
Lesenswert?

Zu deinem Fehler fällt mir zwar grad nichts ein, aber kannst du das 
nicht einfach in einer while-Schleife machen? Ist zwar nicht besonders 
effizient "nichts" zu tun, aber würde doch aufs gleiche raus kommen, 
oder?

Ich würd das vielleicht so machen:
1
if ( (i == 7) || (i == 12) || (i == 16) ...)
2
{
3
; //nichts tun
4
}
5

6
else
7
{
8
; //etwas tun
9
}

oder
1
while( (i == 7) || (i == 12) || (i == 16) ...)
2
{
3
; //nichts tun
4
}

edit
hast du oben beim if nicht nen semikolon zuviel?!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren