0

私は、ユーザーの端末から複数の入力を受信する必要があるアプリケーションを開発していますが、無効な入力をエレガントに処理し、ユーザーに再入力を求めています。私の最初の考えはwhile、本体が入力を受け取り、その有効性を検証し、有効な入力を取得したときにフラグを設定するループを作成することです。このフラグは、アプリケーションのステージをマークし、次に必要な入力のタイプを決定し、ループの終了条件としても使用されます。

機能的ではありますが、これはかなりエレガントではないように思われ、解析する新しい入力があることを示すためにリターンキーが押されるたびに呼び出される関数を簡単に記述できる方法があるかどうか疑問に思いました。の線に沿った何か

public class Interface {
    public void receiveInput( final String input ){
        // Parse 'input' for validity and forward it to the correct part of the program
    }
}

おそらくこれは、いくつかのJavaクラスと、通常はそのようなイベントを処理する関数の1つを再実装することで実現できますがextending、それはおそらく私のC++のバックグラウンドです。

ビルドと単体テストに必要なものを除いて、外部ライブラリを使用することは許可されていません。

4

1 に答える 1

2

コンソールからの読み取り中に、BufferedReader を使用できます

BufferedReader br = new BufferedReader( new InputStreamReader( System.in));

readLine 関数を呼び出すと、新しい行が処理されます。

String readLine = br.readLine();

情報を読み取って続行する関数があるクラスを確実に持つことができます。

参考までにサンプルコードはこちら

public class TestInput {


    public String myReader(){
        boolean isExit = true;
        while (isExit){
            System.out.print("$");
            BufferedReader br = new BufferedReader( new InputStreamReader( System.in));

            try {
                String readLine = br.readLine();
                if (readLine != null && readLine.trim().length() > 0){
                    if (readLine.equalsIgnoreCase("showlist")){
                        System.out.println("List 1");
                        System.out.println("List 2");
                        System.out.println("List 3");
                    } if (readLine.equalsIgnoreCase("shownewlist")){
                        System.out.println("New List 1");
                        System.out.println("New List 2");
                    } if (readLine.equalsIgnoreCase("exit")){
                        isExit = false;
                    }
                } else {
                    System.out.println("Please enter proper instrictions");
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        return "Finished";
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("Please Enter inputs for the questions asked");
        TestInput ti = new TestInput();
        String reader = ti.myReader();
        System.out.println(reader);
    }

出力は次のとおりです。

Please Enter inputs for the questions asked
$showlist
List 1
List 2
List 3
$shownewlist
New List 1
New List 2
$exit
Finished

お役に立てれば。

于 2013-02-02T16:02:37.460 に答える