[JAVA]Abfangen ungültiger Eingaben

01/07/2015 19:43 The_Dentist#1
Hallo,

ich habe mal eine allgemeine Frage und zwar wie löse ich am besten folgendes Problem:

z.B.
User sollen eine Zahl zwischen 1 - 3 eingeben. Nehmen wir an ein User gibt eine Zahl darüber ein. Dann kann ich diese ja abfangen und nochmal bitten den User ein Zahl einzugeben. Allerdings frage ich mich, wie ich dieses Problem löse, wenn der User immer wieder eine Zahl darüber eingibt. Wie kann ich die Abfrage immer wieder neu starten, bis der User eine Zahl dazwischen eingegeben hat?

Ich schätze mal ich erstelle mir eine Methode und eine while Schleife, und solange diese false wiedergibt, soll er die Abfrage neustarten?! Würde man dieses Problem so lösen?

Code:
while (!Tag_Check(tag)) {
			System.out.println("Gib den Tag ein: DD");
			tag = a.nextInt();
		}

private static boolean Tag_Check(int tag) {
		
		if (tag > 31 || tag <= 0)
			return false;
		return true;
	}
MfG
01/07/2015 19:56 qqdev#2
Endlosschleife. Im Schleifenrumpf dann eine if-Abfrage, die klärt, ob die Eingabe gültig ist.
01/08/2015 11:49 XYZ-Cannon#3
Code:
while (!Tag_Check(tag)) {
			System.out.println("Gib den Tag ein: DD");
			tag = a.nextInt();
		}

private static boolean Tag_Check(int tag) {
		
boolean eingabeGueltig=false;
		  while (eingabeGueltig==false)
		  {
			  if (tag>3 || tag <=0)
			  {
				  System.out.println("Ungültige Eingabe!")
			  }
			  else
				  eingabeGueltig=true;
		  }
		  return;
	}
Sollte funktionieren, falls du es noch nicht hinbekommen hast.
01/08/2015 12:09 The_Dentist#4
Hallo danke für die Antwort. Aber mein Code geht doch, es war nur die Frage, ob man ein solches Problem so löst. Gruß
01/09/2015 07:56 xEncounter#5
Du kannst auch abfangen ob das Eingegebene eine Zahl ist.

Mit der Double.isNaN() Methode gibt er true zurück wenn der Double Wert Not-A-Number(NaN) ist oder gibt false zurück wenn er ein double wert ist.
01/09/2015 16:41 Warnuk3r#6
Hier mal ausschnitt aus einem alten Programm.

p1 ist ein Objekt von der Klasse Person. Eingabe wird so oft wiederholt gefordert, bis richtige Eingabe getätigt worden ist.

Code:
do{ eingabe = StdInput.readString("Name: "); } while(!p1.setName(eingabe));
Code:
	public boolean setName(String pName) {
		if(pName.matches("[A-Z][a-z]+")) {
			this.name = pName;
			return true;
		} else {
			return false;
		}
	}
01/09/2015 17:15 Obilee#7
Es gibt viele Wege nach Rom und deins geht.
01/19/2015 22:38 'Mahone#8
Code:
package de.iremix;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int tag = -1;
		
		while(!validNum(tag)) {
			System.out.print("Gib eine Zahl zwischen 1 und 3 ein: ");
			tag = scan.nextInt();
		}
		
	}
	
	public static boolean validNum(int n) {
		return (n <= 3 && n >= 1);
	}

}