2016-11-18 8 views
-4

私はいくつかの方法でJavaプログラムを実装しました。次に、単語を入力して関連するメソッドを呼び出すメインクラスを作成しました。例えばすべてのコマンドを一度に入力できますか?

:私が欲しいもの

Enter {A|B|C|D|E} to call method. A=method one B = method two...etc 
A<--this is the user input 
Enter Number:<--the first Scanner input of method A 
123<--Input 1 
Enter words:<-- the second Scanner input of method A 
ABC<--Input 2 

123ABC<--The output method A 

Enter {A|B|C|D|E} to call method. A=method one B = method two...etc 
B<--this is the user input 
Enter Number 1:<--the first Scanner input of method B 
100<--Input 1 
Enter Number 2:<-- the second Scanner input of method B 
50<--Input 2 

150<--The output method B 

Code of Method A { 
String output; 
private static Scanner keyboard = new Scanner(System.in); 
System.out.println("Enter Number:"); 

String no = keyboard.nextLine(); 

System.out.println("Enter Words:"); 

String words = keyboard.nextLine(); 

//do something... 
System.out.println(output); 
} 

Code of Main class{ 

private static Scanner keyboard = new Scanner(System.in); 
public static void main(String[] args){ 
Main main = new Main(); 
main.run(); 
} 
    public void run() { 
    boolean running = true; 

    while (running) { 
     displayMenu(); 

     String command = keyboard.nextLine(); 
     String[] parts = command.split("^"); 

     if ("A".equalsIgnoreCase(command)) { 
      //call method A 
     } else if ("B".equalsIgnoreCase(command)) { 
      //call method B 
     } else if....etc 

     System.out.println(); 
    } 

一度

123、ABC
B
100,50入力
で、システムはメソッドA(123ABC)の出力を印刷し、 B(150)私のために。私が欲しいもの

は、私はそれをどのように行うことができます一度

で「言葉」の中に「キーボード」、「なし」に入力123と入力ABCへの入力Aのですか?

+1

私の回答が役に立ちましたと思いますが、今後はさらに具体的な質問をすることをお勧めします。あなたの明白な質問は、答えが "はい"である "それは可能です"です。しかし、実用的なソリューションを実装するために欠けているものが何であるかわからないため、コード全体を作成したいと思っている人を見つけるのは難しいでしょう。 – Aaron

+0

あなたの答えに感謝します。私はより具体的に私の質問を変更しました –

答えて

0

Scanner(またはその基礎となる入力ストリーム)を閉じない限り、まだ読み込まれていないトークンは後で使用できるようになります。2行(4トークン - カンマは1つ) "B \n 100,50"が残ります。

このような入力方法は、あなたの呼び出し方法によって異なります。 bashから実行した場合、私は次のように使用したい:

echo """A 
123 , ABC 
B 
100,50""" | java ... 

名前は動的にメソッドを呼び出す方法を求めている場合は、リフレクションAPIを確認してください。 Oracle's tutorialは、私の意見では、良いリソースです。here's a linkメソッドの取得と呼び出しに関するセクション。

0

これには2通りの方法があります。

ファースト:代わりに、コンソールで直接入力を与えるの

、まずどこかにすべてのデータの入力を書き、それをコピーして、コンソールに貼り付けます。第二に


あなたはhasNexLine()を使用してCTRL +Dを押して、キーボードからEOFを送ることができます。

コード:

public static void main(String[] args) 
    { 

     Scanner s = new Scanner(System.in); 
     StringBuilder sb = new StringBuilder(); 

     while(s.hasNextLine()) 
     { 
      sb.append(s.nextLine()); 

     } 
     System.out.println(sb.toString()); 
    } 

は、すべての入力を提供し、入力の服用を中止するCTRL +Dを押してください。

+0

最初のやり方は私がしたいことです。しかし、それはメソッドの入力に保存することはできません。どうすれば修正できますか? –

+0

@Adonis。C私はあなたのコードを理解できませんでした。有効な作業コードを投稿してください。 ** "それはメソッドの入力に保存することはできません。どうすれば修正できますか?" **有効な作業コード、期待している出力(既に行った)と出力してください。 'メソッドAのコード'と 'メインクラスのコード'とは何ですか?コードの形でコードを提供する。英語の形態ではありません。同様の方法があると言うことができます。しかし、正確なコード構造を提供する必要があります。 – SkrewEverything

関連する問題