Kirjoita luokka KysyUudestaan
ja lisää siihen main
-metodi.
Main-metodissa sinun tulee kysyä käyttäjältä kokonaislukutyyppistä syötettä. Jos käyttäjä antaa syötteen, joka ei ole kelvollinen kokonaisluku, ohjelmasi tulee kysyä syötettä uudelleen esimerkkisuorituksen mukaisesti.
Kun käyttäjä syöttää kelvollisen kokonaisluvun, ohjelmasi tulee tulostaa annettu luku esimerkkisuorituksen mukaisesti ja sen suorituksen tulee päättyä.
Totetutustavastasi riippuen sinun tulee varautua tehtävässä joko InputMismatchException tai NumberFormatException -tyyppisiin poikkeuksiin.
Huom: ratkaisutavastasi riippuen saatat tässä tehtävässä törmätä ikuiseen silmukkaan, jossa ohjelmasi ei kysy virheellistä arvoa uudelleen. Tämä johtuu siitä, että virheellinen syöte jää System.in-syötepuskuriin ja seuraavalla kerralla ohjelmasi yrittää lukea samaa virheellistä arvoa uudelleen. Stack Overflow -palvelussa on tarkempi keskustelu tästä aiheesta.
Syötä kokonaisluku: 1_000
Virheellinen luku!
Syötä kokonaisluku: ?
Virheellinen luku!
Syötä kokonaisluku: +
Virheellinen luku!
Syötä kokonaisluku: a b c
Virheellinen luku!
Syötä kokonaisluku: -8
Syötit luvun -8.
KysyUudestaan.java
import java.util.InputMismatchException;
import java.util.Scanner;
public class KysyUudestaan {
public static void main(String[] args) {
while (true) {
System.out.print("Syötä kokonaisluku: ");
Scanner syote = new Scanner(System.in);
try {
int luku = syote.nextInt();
System.out.printf("Syötit luvun %d.", luku);
System.exit(0);
} catch (InputMismatchException e) {
System.out.println("Virheellinen luku!");
}
}
}
}