2016-11-18 2 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, АВС
Б
100,50 сразу
то система будет печатать выход метода А (123abc) и B (150) для меня.

То, что я хочу, это вход А в «клавиатуры», вход 123 в «нет» и ввода ABC в «слова» сразу

Как я могу это сделать?

+1

Надеюсь, мой ответ был полезен, но вы должны стремиться задавать более конкретные вопросы в будущем. Ваш явный вопрос: «возможно ли это», на что ответ «да». Тем не менее, мы не знаем, чего вам не хватает, чтобы реализовать рабочее решение, и вам будет трудно найти кого-то, желающего создать для вас весь код. – Aaron

+0

Спасибо за ваши ответы. Я изменил свой вопрос, чтобы он стал более конкретным. –

ответ

0

До тех пор, пока вы не закроете свой Scanner (или его базовый поток ввода), токены для чтения будут доступны для последующего использования: прочитайте две строки (или 4 токена - запятая одна) и «B \n 100,50» останется.

Если вы спрашиваете, как обеспечить такой вход, это зависит от вашего метода invokation. Если выполнены из bash, я хотел бы использовать следующее:

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

Если вы спрашиваете, как динамически вызывать метод от его имени, проверить отражение API. Oracle's tutorial - хороший ресурс, на мой взгляд, here's a link в его разделе о методах извлечения и вызова.

0

Есть 2 способа сделать это.

Первое:

Вместо того чтобы давать вход непосредственно в консоли, сначала запишите все входные данные где-то и просто скопировать его и вставить его в консоли.


Второе:

Вы можете использовать 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 прекратить принимать ввод.

+0

Первый способ - это то, что я хочу сделать. Но он не может сэкономить на входе метода. Как я могу это исправить? –

+0

@Adonis.C Я не понял ваш код в вопросе. Отправьте действующий рабочий код. И что это такое **, «он не может сэкономить на входе метода. Как я могу его исправить?» ** Пожалуйста, укажите действующий рабочий код, вывод, который вы ожидаете (который вы уже сделали), и вывод, который вы получаете. Что такое «Код метода А» и «Кодекс основного класса»? Предоставьте код в виде кода. Не в форме английского. Вы можете сказать, что есть похожие методы. Но вам нужно предоставить точную структуру кода. – SkrewEverything

Смежные вопросы