0

В Java я взять вход с использованием стандартных Scanner и BufferedReader классов, как:Каковы быстрые способы ввода ввода в java?

Scanner sc=new Scanner(System.in); 
int a=sc.nextInt(); 

или

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

int a=Integer.parseInt(br.readLine()); 

но с учетом ввода, как это занимает много времени работы. Я хотел бы узнать, как быстрее можно вводить данные. Заранее спасибо

Редактировать: Я видел лучшие java-кодировщики, такие как uwi, которые вводят ввод совершенно по-другому. Они сами создают собственный класс читателей. Я не понимаю, как их программа становится быстрой во время выполнения.

+3

Что вы подразумеваете под «более быстрым»? Если вы хотите, чтобы пользователь дал ввод вручную, он будет таким же медленным, как пользователь решает. – Kayaman

+0

Я не знаю, что вы имеете в виду. Безусловно, самая медленная часть этого будет набирать числа в, и я не вижу, как вы можете этого избежать. –

+0

Чтение из файла вместо консоли. Таким образом, вы можете читать гораздо быстрее, чем любой человек может напечатать. – fabian

ответ

3

В следующей статье автор рассматривает три различных способа для чтения данных от пользователя в среде командной строки (также известный как «консоль»). Каждый способ довольно прост в использовании, а также имеет свои преимущества и недостатки.

Ниже описаны механизмы и приведены примеры. Существует также раздел «за и против».

Ссылка: http://www.codejava.net/java-se/file-io/3-ways-for-reading-input-from-the-user-in-the-console

Ссылка: Most Efficient Way of Taking User Input in Java

Варианты:

Сканер class->

Scanner reader = new Scanner(System.in); // Reading from System.in 
    System.out.println("Enter a number: "); 
    int n = reader.nextInt(); 

DataInputStream->

DataInputStream dis = new DataInputStream(System.in); 
int i = dis.readInt(); 

BufferedReader ->

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
System.out.print("Enter your name: "); 
String name = reader.readLine(); 
System.out.println("Your name is: " + name); 

Console->

Console console = System.console(); 
    String s = console.readLine(); 
    int i = Integer.parseInt(console.readLine()); 
3

Цитата Дежавю: «BufferedReader намного быстрее, чем сканер, потому что буфера характера, так что вы не имеете доступа к файлу каждый раз, когда вы хотите прочитать полукокс из него

Scanner имеет. конкретное использование, такое как прямое считывание примитивного типа данных, а также для регулярных выражений.

Я использовал Scanner и BufferedReader, и BufferedReader обеспечивает значительную быструю производительность, и вы можете проверить его сами ».

от: which to choose buffered reader or scanner from performance point of view

+0

Я знаю, что я хочу лучшего решения, чем эти два –

+0

вы ищете что-то вроде этого? http://stackoverflow.com/questions/7049011/whats-the-fastest-way-to-read-from-system-in-in-java – SeeuD1

+0

nope, я вроде бы хочу создать свой более эффективный класс читателей, чтобы принимать входные данные, такие как pro кодировщики –

3

Если вы хотите быстрый путь к входу через стандартный ввод (и, если я вас правильно понял, вы хотите быстрый путь для многократного подачи входных данных в ваши программы), наилучшим вариантом является передача или перенаправление консервированных ответов, например

$ java MyReadingClass < mycannedinput.txt 

так что вы можете создать свой класс, чтобы принять интерактивный ввод с помощью стандартного ввода, а затем использовать простое перенаправление оболочки кормить в консервированном вводе таким образом, что вам не придется перепечатывать его каждый раз.

+1

можете ли вы предоставить фрагмент кода для ссылки? –

+0

Нет кода. Если ваша программа читает с stdin, тогда это будет работать, в зависимости от os –

+0

, мне действительно нужно это для конкурентного кодирования, поэтому моя ОС не имеет значения –

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