Terminal Eingabeverarbeitung

B

Bgag

Hallo!
Ich habe eine Klasse Input geschrieben, die eingaben aus der Konsole ließt und verarbeitet. Nun möchte ich eine weitere Methode integrieren. Dieser Methode soll ein Array übergeben werden, dass mehrere Einträge enthält, wobei jeder Eintrag aus einem key, einer Beschreibung und einem Methodenname besteht. Es soll als erstes überprüft werden, ob alle Methoden, die in dem Array übergeben wurden auch wirklich existieren. Ist dies der Fall soll eine Ausgabe in der Form
Key. Beschreibung
gemacht werden. Auf diese Ausgabe des Menüs soll eine Eingabeaufforderung folgen (ist bereits implementiert) die einen Integer vom Terminal ausließt ( readInt("Choose option: ") ) der Rückgabewert dieses Methodenaufrufs soll nun verarbeitet werden. Zuerst soll überprüft werden, ob dieser Key überhaupt existiert und sonst ein fehler und eine erneute Eingabeaufforderung ausgegeben werden ( while()-Schleife ), ist die Eingabe ok, sollst die entsprechende Methode ausgeführt werden und danach wieder das Menü angezeigt werden.

Ich möchte in meine Klasse noch eine yesNo()-Methode einbinden, die den Nutzer fragt, ob er weiter verfahren möchte oder nicht. dazu muss ich natürlich eine Eingabe auslesen und abgleichen. leider weiß ich nicht, wie ich einen Abgleich in Java realisieren kann. Die Methode soll als Antwort ja, nein, j, n, y, yes, no, ohne Beachtung der Groß- und Kleinschreibung akzeptieren. Bei einer falschen Eingabe soll die Eingabeaufforderung ebenfalls wiederholt werden.

Leider weiß ich nicht, wie ich diese Methoden schreiben soll kann mir dabei jemand helfen? Wäre sehr nett. Die Klasse in ihrer bisherigen Form findet ihr im Anhang bin offen für jegliche Verbesserungsvorschläge.

MfG, Andy

Java:
// import io classes
import java.io.*;

/**
 * Class Input
 *
 * Reads input from the command line.
 * This is very helpful, when you are
 * dealing with short programs to
 * make oneself more familiar with
 * different algorithms.
 *
 * @package Input
 * @version 0.1
 * @author Andreas Wilhelm
 * @copyright Andreas Wilhelm <andreas.wilhelm@avedo.net>
 **/
public class Input
{
	/**
	 * readln() - Reads input string from command line
	 *
	 * @access public
	 * @return NONE
	 **/
	public static String readln()
	{
		try
		{
			// initiate input-reader
			BufferedReader in = new BufferedReader(
				new InputStreamReader(System.in) );
	
			// read input
			String s = in.readLine();
		
			// return input
			return s;
		}

		catch( IOException e )
		{
			System.out.println("Error - Please try again.");
		}

		return "No Input.";
	}

	/**
	 * readln() - Reads input string from command line after a promt
	 *
	 * @access public
	 * @param String prompt
	 * @return String
	 **/
	public static String readln(String prompt)
	{
		System.out.print(prompt);
		return readln();
	}

	/**
	 * readInt() - Reads input integer from command line
	 *
	 * @access public
	 * @return Integer
	 **/
	public static int readInt()
	{
		int input;

		while( true )
		{
			try
			{
				input = Integer.valueOf(readln()).intValue();
				break;
			}

			catch( NumberFormatException e )
			{
				System.out.print("Invalid Input: ");
				continue;
			}
		}

		return input;
	}

	/**
	 * readInt() - Reads input integer from command line after a promt
	 *
	 * @access public
	 * @param String prompt
	 * @return Integer
	 **/
	public static int readInt(String prompt)
	{
		System.out.print(prompt);
		return readInt();
	}

	/**
	 * readFloat() - Reads input float from command line
	 *
	 * @access public
	 * @return Float
	 **/
	public static float readFloat()
	{
		Float input;

		while( true )
		{
			try
			{
				input = Float.valueOf(readln()).floatValue();
				break;
			}

			catch( NumberFormatException e )
			{
				System.out.print("Invalid Input: ");
				continue;
			}
		}

		return input;
	}

	/**
	 * readFloat() - Reads input float from command line after a promt
	 *
	 * @access public
	 * @param String prompt
	 * @return Float
	 **/
	public static float readFloat(String prompt)
	{
		return Float.valueOf(readln(prompt)).floatValue();
	}

	/**
	 * readDouble() - Reads input double from command line
	 *
	 * @access public
	 * @return Double
	 **/
	public static double readDouble()
	{
		Double input;

		while( true )
		{
			try
			{
				input = Double.valueOf(readln()).doubleValue();
				break;
			}

			catch( NumberFormatException e )
			{
				System.out.print("Invalid Input: ");
				continue;
			}
		}

		return input;
	}

	/**
	 * readDouble() - Reads input double from command line after a promt
	 *
	 * @access public
	 * @param String prompt
	 * @return Double
	 **/
	public static double readDouble(String prompt)
	{
		return Double.valueOf(readln(prompt)).doubleValue();
	}
}
 
Zurück