我可以一次输入所有命令吗?

时间:2016-11-18 16:01:14

标签: java input command

我用一些方法实现了一个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();
    }

我想要的是输入
A
123,ABC
B
立即150,50 那么系统将为我打印方法A(123ABC)和B(150)的输出。

我想要的是输入A键盘&#34;输入123到&#34; no&#34;并将ABC输入&#34;单词&#34;马上

我该怎么做?

2 个答案:

答案 0 :(得分:0)

只要您不关闭Scanner(或其基础输入流),尚未读取的令牌仍可供以后使用:读取两行(或4个令牌 - 逗号是一个)和&#34; B \n 100,50&#34;将继续。

如果您正在询问如何提供此类输入,则取决于您的调用方法。如果从bash执行,我将使用以下内容:

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

如果您要询问如何从名称中动态调用方法,请检查反射API。我认为Oracle's tutorial是一个很好的资源,here's a link是关于检索和调用方法的部分。

答案 1 :(得分:0)

有两种方法可以做到。

<强>首先

不是直接在控制台中输入,而是先将所有数据输入到某处,然后将其复制并粘贴到控制台中。

<强>第二

您可以使用hasNexLine()并通过键盘发送EOF,方法是按 ctrl + d

<强>代码:

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 以停止输入。