Kezdőoldal » Számítástechnika » Programozás » Hogy tudom leellenőrizni...

Hogy tudom leellenőrizni C#-ban, hogy a bekért szám string-e?

Figyelt kérdés

Ú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?



2015. jan. 26. 22:27
1 2 3
 1/30 A kérdező kommentje:

Azaz nem is a változó típusának lekérdezésére, mert az int az int marad attól még, hogy hibás értéket kapott...

Inkább mondjátok meg ti a megoldást légyszi! :D

2015. jan. 26. 22:33
 2/30 anonim ***** válasza:

(A) Végigmész a karaktereken és ekkor csak 10 lehetőséget kell vizsgálnod. Ha akár csak egy pozíción is nem számjegy van -> HIBA.

(B) Ezt a 10 lehetőséget egészen biztosan megoldhatod egy .isDigit() metódussal valamelyik osztály segítségével.

(C) Bonyolíthatod, de egyúttal teljes ellenőrzésed alá is veheted a dolgot, ha reguláris kifejezést használsz. Ha a szöveg illeszkedik /\d+/-re, akkor csak számok vannak benne.

2015. jan. 26. 22:36
Hasznos számodra ez a válasz?
 3/30 A kérdező kommentje:

A B-t meg a C-t nem igazán értem... :D

De az A az megfelel! :)

Köszi!

2015. jan. 26. 22:38
 4/30 anonim ***** válasza:

B: [link]


A C-hez most nincs erőm.

2015. jan. 26. 22:41
Hasznos számodra ez a válasz?
 5/30 A kérdező kommentje:
nembaj, úgyis jó lesz nekem az A! :D
2015. jan. 26. 22:47
 6/30 SimkoL ***** válasza:

Egyszerűbb ha eleve stringgént kéred be és és pl. az Int.TryParse() függvénnyel átalakítod. Ha a függvény hamis akkor nem alakítható számmá.

double egyik, masik;

bool joegyik = Double.TryParse(textBox1.Text, out egyik);

if (!joegyik)

{

MessageBox.Show("Hibás számformátum !", "Egyik szám hiba !");

return;

}

2015. jan. 26. 22:48
Hasznos számodra ez a válasz?
 7/30 anonim ***** válasza:

Nem inkább azt szeretnéd ellenőrizni hogy a bekért string szám e?


int szam;

bool result = Int32.TryParse("-123456", out szam);

if (result == true) Console.WriteLine(szam);

else Console.WriteLine("Nem sikerült beolvasni a számot!");

2015. jan. 26. 22:48
Hasznos számodra ez a válasz?
 8/30 anonim ***** válasza:

1. Bekéred és parzolás előtt ellenőrzöd a String.IsDigit() metódussal.


2. A Int.TryParse metódussal próbálod parzolni, ez a visszatérési értékében jelzi ha nem sikerült, második paramétere pedig egy referncia egy létező int változóra.


3. Bekérés után try-catch blokkban parzolod az Int.Parse metódussal és elkapod a kivételt.

2015. jan. 27. 13:10
Hasznos számodra ez a válasz?
 9/30 A kérdező kommentje:

#6-os! itt nem windows formról van szó, hanem console applicationről :P

de ne fáradjatok, már megoldottam, méghozzá így:

Console.Write("Írja be a számot: ");

debug = Convert.ToString(Console.ReadLine());

for (int i = 0; i < debug.Length; i++)

{

if (debug[i] != '1' && debug[i] != '2' && debug[i] != '3' && debug[i] != '4' && debug[i] != '5' && debug[i] != '6' && debug[i] != '7' && debug[i] != '8' && debug[i] != '9' && debug[i] != '0')

{

debug = "BUG";

break;

}

else

szám = Convert.ToInt32(debug);

}

és ha átkonvertálja számmá, mert pl az utoldó karakterre igaz, hogy egy szám, akkor se fogja már átadni ezt a változót a függvényemnek, ami végrehajtja a dolgokat, mert az egyik feltételemben szerepel az is, hogy a debug string szövege "BUG"-e, és ha egy karakter már nem szám, akkor az lesz!

szóval minden frankón működik :D köszönöm a segítségeket!

2015. jan. 27. 17:57
 10/30 A kérdező kommentje:

de amit a #8-as mondott, az se rossz!

a try-catch eszembe juthatott volna.. xDD

2015. jan. 27. 18:01
1 2 3

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!