Permalänk

Java loop?

Hej

Går nu en kurs i Java där jag fått i uppgift att göra ett program där användaren ska kunna ange ett tal och därefter sin ålder. Efter det ska jag (beroende på inom vilket intervall talet ligger) beräkna en procentsats.

Har gjort en dialogruta där användaren kan ange sitt tal och sen gjort så att talet räknas om till int. Därefter kommer en ja/nej-fråga om åldern.

String s = JOptionPane.showInputDialog("Ange ett tal");
int tal = Integer.parseInt(s);

int s1 = JOptionPane.showConfirmDialog(null, "Är du över 35 år?", "Fråga", JOptionPane.YES_NO_OPTION);

Men eftersom att användaren även kan ange bokstäver och olika symboler istället för ett tal så hade jag velat ha att det kommer upp en ruta med tex "ogiltligt tal, försök igen" eller liknande.
Har funderat på om jag kan göra en loop men vet inte exakt hur jag ska göra?
Försökte med

for ( int i=1; i<=s.length(); i++)
{ if (s.charAt(i) >= '0' && s.charAt(i) <= '9')

int tal = Integer.parseInt(s);
else
JOptionPane.showMessageDialog(null, "Inget tal, försök igen");

}

då jag ville att loopen skulle genomsöka talet och se om det var enbart siffror. Om det var ett tal så vill jag att programmet ska göra om string till int ( som jag skrev högre upp) så att jag kan göra matematiska uträkningar. Men jag får det inte att fungera. Om det inte är ett tal så ska en ruta visas med text.

Efter detta vill jag att loopen ska avslutas och åldersfrågan kommer och därefter beräkningarna med procentsatser. Där tänkte jag göra if-satser beroende på vilket intervall talet hamnar inom.

Någon som vet om det går att göra en loop som testar att det är ett giltigt tal? För min variant fungerar inte

Permalänk
Medlem

Du kan antingen fånga exception som parseInt kommer slänga om det inte går att parsa som en integer eller så kan du validera att en sträng bara innehåller siffror väldigt enkelt med Regex: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pat...

Med det sagt får du nog öva mer på loopar och förstå hur de fungerar, det verkar finnas ett hål i din kunskap där.

Permalänk

@dlq84:

Tack för svar och länken!
Ja det gör det absolut, är helt nybörjare sen någon vecka tillbaka men tycker det är väldigt kul och vill lära mig mer och det är just loopar som jag har svårast mer. Jag tror att jag övertänker när jag kommer till looparna.

Permalänk
Medlem
Skrivet av GranenGran:

@dlq84:

Tack för svar och länken!
Ja det gör det absolut, är helt nybörjare sen någon vecka tillbaka men tycker det är väldigt kul och vill lära mig mer och det är just loopar som jag har svårast mer. Jag tror att jag övertänker när jag kommer till looparna.

Ja, det är helt klart ett problem bland nybörjare. Ett vanligt problem är att man glömmer bort att array:er och chars i en sträng är 0-indexerade, Alltså om du ska ha första bokstaven i en sträng ligger den på position 0 och inte 1. Och det ger också att sista char i en sträng ligger på <strängens längd> - 1

Permalänk

@dlq84: Tack, det ska jag bära med mig och tänka på!