Hogy tudom leellenőrizni C#-ban, hogy a bekért szám string-e?
Úgy értem, hogyha elrontaná valaki az adat megadását, és szám helyett stringet ír, akkor hogy oldjam meg azt, hogy azt ne a fejlesztői környezet debugja, vagy a windows érzékelje, hanem én egy ifben?
Egyesével minden lehetőségre nem csinálhatok egy-egy ifet, mert az ugye végtelen sok variáció...
Nincs valamilyen lehetőség egy változó típusának lekérdezésére?
csak poénosra vettem a debugot, na! :D
de te most pontosan mit is kritizálsz ebben?!
String ellenőrzéseket lecserélném enumokra, a GOTO-kat kivenném, valamint oda ahol a szám ellenőrzés van bevezetnék egy bool-t visszaadó függvényt amit két okkból tennék:
1: Ha máshol is használni akarom csúnya hosszú lesz a kód
2: Ugye tudod, hogy egy 10 számjegyű számnál 10-szer konvertálod át a stringet számmá és adod értékül a szám változódnak? Ami még rosszabb, hogy ha első karakter szám a többi 9 betű akkor is elkezdi konvertálni és újra a windows fogja kezelni a kivételt ami rendszerint a program összeomlását jelenti.
A Console.ReadLine() pedig stringel tér vissza nem kell konvertálni.
#16!
a goto azért kell, hogy folytonos legyen a program futása
és ha az első karakter szám, a többi betű, valóban átkonvertálja, VISZONT: a debug változónak meg a "BUG" szöveget fogja adni, és a lentebbi ifben szerepel, hogyha "BUG", akkor kész, vége, visszaugrik az elejére
de ha átkonvertál egy stringet számmá, ott még nincs gond, amíg azt nem akarjuk használni... ha egy hibás számra (ami itt string :D) hivatkozol, ott fog csak kicrashelni!! vágod? :P
mellesleg én azóta már hogy kész lett (mert ez már a kész állapot) a lehető összes helyen direkt hibás adatot gépeltem be, és minden esetben az én hibaüzenetem jelent meg, nem a windowsé! szóval jól működik!!
de azt meg, hogy "minden frankó" már az első oldalon leírtam xDDD az utána való kommentben csak azt írtam le, hogy itt rohadtul nem windows formról van szó! :D
Pár sorban, jobban:
static void Main(string[] args)
{
Console.Write("Írjon be egy 'c' -t, ha egy karakter ascii kódját szeretné megkapni!\nÍrjon be egy 'i' -t, ha egy ascii kód karakterét szeretné megkapni!\n\n");
bool exit = false;
while (!exit)
{
switch (Console.ReadKey(true).KeyChar)
{
case 'c':
Console.WriteLine("Írjon be egy betűt: ");
char ch = Console.ReadKey(true).KeyChar;
Console.WriteLine(ch + " : " + (int)ch);
break;
case 'i':
Console.Write("Írjon be egy számot: ");
int i;
if (Int32.TryParse(Console.ReadLine(), out i))
if (i <= 0 || i >= 255)
Console.WriteLine("Hibás szám!");
else
Console.Write(i + " : " + (char)i + "\n");
else
Console.WriteLine("Ez nem szám!");
break;
case 'q':
exit = true;
break;
default:
Console.WriteLine("Hülye vagy te fiacskám!");
break;
}
}
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!