JAVA nur Eingabe von natürliche Zahlen erleuben.?

2 Antworten

Ich nehme mal an, dass du in echt folgendes haben willst:

  • Das Programm soll nicht abstürzen wenn man eine falsche Zahl eingibt
  • Stattdessen soll der Fehler abgefangen (also gecatcht) werden
  • Dann soll dem Nutzer eine verständliche Fehlermeldung ausgegeben werden
  • Dann soll der Nutzer die Zahl erneut eingeben können

Dein Programm wirft ja bereits einen Fehler, wenn bei nextInt() keine Ganzzahl eingegeben wird. Hast du sicher schon bemerkt. Um solche Fehler - Exceptions genannt - abzufangen benutzt man try-catch. Am besten einfach googlen. Das habe ich hier in eine extra Funktion (initGanzzahl) gepackt, um unnötiges Wiederholen von Code zu vermeiden.

Hier meine Musterlösung:

public class Wachstum {
    public static Scanner scanner;

    public static void main(String[] args) {
        scanner = new Scanner(System.in);

        int monate = initGanzzahl("Geben Sie bitte die Monatszahl ein");
        double anzahlMaeuse = initGanzzahl("Geben Sie bitte die AnzahlMaeuse ein");
        double wachstumsFaktor = initGanzzahl("Geben Sie bitte den Wachstumsfaktor ein");
        double reduzierung = initGanzzahl("Geben Sie bitte die Reduzierungzahl ein");
        double aktueleAnzahlMaeuse = 0;

        for (int i = 0; i < monate; i++) {
            anzahlMaeuse += anzahlMaeuse * wachstumsFaktor / 100;
            aktueleAnzahlMaeuse -= anzahlMaeuse * reduzierung / 100;
        }
        
        System.out.println(aktueleAnzahlMaeuse);
   }
   
   public static int initGanzzahl(String aufforderung){
       System.out.println(aufforderung);
       while(true){
        try {
          return scanner.nextInt();
        } catch(InputMismatchException e){ //Falls man keine Ganzzahl eingegeben hat wird der Fehler hier abgefangen
            System.out.println( scanner.next() + " ist keine ganze Zahl! Wiederholen Sie die Eingabe:");
        }
      }
   }

}

(In schön: https://hastebin.com/efimecexot.cs )

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

Das sollte dir eigentlich bereits eine Exception schmeißen, wenn du etwas eingibst, was sich nicht in ein Integer umwandeln lässt.