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

#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 #1373046
Lesenswert?
• ▲
▼
Ja, die Möglichkeiten hatte ich schon.
Blos mein Problem ist, wenn einer dieser Zahlen i ist, soll nix gemacht 
werden. Wenn alle dieser Zahlen nicht vorkommen, wird eine eine Kette 
von Befehlen durchgeführt.

MFG Max
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.