Probleem met invoer controle

Status
Niet open voor verdere reacties.

Bullit91

Nieuwe gebruiker
Lid geworden
18 sep 2009
Berichten
1
Goeiedag,

ik probeer een input te controleren met de functie sc.hasNextInt() om te kijken of het wel een geheel natuurlijk getal is (een integer dus :P). Maar het werkt niet helemaal lekker, het probleem stukcode:
Code:
    do {
      System.out.print("Geef een natuurlijk getal: ");
      if (sc.hasNextInt()) {
        lucasInput = sc.nextInt();
        lucasReeks(lucasInput);
      }
      else {
        System.out.println("Alleen natuurlijke getallen" + 
        " mogen worden ingevoerd!");
      }
      System.out.println("Nogmaals? [y/n]: ");
      nogmaals = input.next().charAt(0);
      
    } 

    while (nogmaals == 'Y' || nogmaals == 'y');
    if (nogmaals =='Y' || nogmaals =='y') {
      System.out.print("Geef een natuurlijk getal: ");
      lucasInput = sc.nextInt();
      lucasReeks(lucasInput);
      System.out.println("Nogmaals? [y/n]: ");
      nogmaals = input.next().charAt(0);
    }
    else if (nogmaals == 'N' || nogmaals == 'n') {
      System.out.println("U wou niet nogmaals."); 
    }
    else {
      System.out.println("Alleen y/n invoeren!");
    }

Zolang ik natuurlijke getallen invoer gaat alles naar wens, zodra ik bijv. 5.4 invul krijg ik inderdaad de melding dat ik alleen natuurlijke getallen mag invoeren.. vervolgens krijg ik gelijk de vraag Herhalen? als ik op y druk krijg ik gelijk weer te horen dat ik alleen natuurlijke getallen mag invoeren en staat er weer Herhalen? druk ik op n exit het programma, zoals het hoort, en typ ik iets anders als y of n dan zegt ie dat ik alleen y/n mag invoeren, ook zoals het hoort. Het probleem is dus dat ie de invoer van Herhalen? ook gebruikt als invoer van lucasInput en een y natuurlijk geen natuurlijk getal is waardoor ik die error krijg... Hoe fix ik dit?
 
inputcontrole, als het antwoord y of Y ga je naar de volgende input. Properder is trouwens om een methode te maken die de berekening doet en een methode die nagaat of je verder wilt en dan een boolean terugzend naar de while loop. De tweede methode leest dan de 'y' of 'n' en reset vervolgens de input.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan