moi vaan.
Teen Visual Basic 2005 express editionilla ohjelmaa, jossa valitset
radiobuttoneilla millaisen laskutoimituksen haluaa (+-*/),painat nappia,
ohjelmaa arpoo sinulle laskun, johon vastaat textboxilla ja ohjelma tarkistaa.
ongelma 1.
Mitä voin tehdä ettei tule nollalla jakamista?
ongelma 2. (kriittisempi)
Jos vastaustextboxiin laittaa kirjaimia, tulee viesti:
muunto merkkijonosta lajiksi double ei ole mahdollinen.
Ohjelma sekoaa.
ihmeellisintä on, että minun muuttujani eivät ole lajia double, vaan integer!
Vaikka vaihdan muuttujat (Luku1 & Luku2) lajiksi String, niin: Ei toimi!
Help me!
1. Tutustu If-Then-Else-rakenteeseen, se toimii aivan samalla tavalla kuin vanhassakin VB:ssä. Tarkista siis, onko kyseessä jakolasku ja onko jakaja nolla, ja jos on, näytä virheilmoitus, muuten laske lasku.
2. Tarkista ensin IsNumeric-funktiolla, ovatko tekstit lukuarvoiksi sopivia, ja muunna ne vasta sitten luvuiksi. Käytä tässäkin If-lausetta.
No niin, ongelma nr.1 selvitetty tälläisellä koodilla:
siis lisäsin loopin.
If RadioButton4.Checked = True Then Do Luku2 = CStr(Int(Rnd() * 10)) Loop Until Not Luku2 = 0 If TextBox1.Text = Luku1 / Luku2 Then MsgBox("RIGHT!") Else MsgBox("NO!") End If End If
selvennykseksi ongelmaan 2 liittyvät kohdat:
Dim Luku1 As Integer Dim Luku2 As Integer
Randomize() Luku1 = CStr(Int(Rnd() * 10)) Luku2 = CStr(Int(Rnd() * 10))
If RadioButton4.Checked = True Then If TextBox1.Text = Luku1 / Luku2 Then
Niin, voisiko joku selittää, miten tätä IsNumeric-functiota käytetään? Ehtonako?
esim. if Not TextBox1.Text = IsNumeric?
Anteeksi kun vastaan lopulta omiin kysymyksiini, mutta ongelma 2 on ratkaistu.
Koodi:
Dim numericCheck As Boolean Dim insert As Object insert = TextBox1.Text numericCheck = IsNumeric(insert) If TextBox1.Text = "" Then MsgBox("ANSWER SOMETHING!") End End If If RadioButton1.Checked = True Then If numericCheck = False Then MsgBox("INSERT NUMBERS!", MsgBoxStyle.Critical) End End If If TextBox1.Text = Luku1 + Luku2 Then MsgBox("RIGHT!") Else MsgBox("NO!") End If End If
Tämä taitaa toimia.
Kiitoksia Metabolixille.
Aihe on jo aika vanha, joten et voi enää vastata siihen.