Da gepufferter Leser ist viel schneller als Scanner-Klasse im Falle der Eingabe von Werten vom Benutzer, aber wie in den meisten der Algorithmus Wettbewerbe beobachtet oder im Falle von Interviews gibt es oft mehrere ganze Zahlen auf einer einzigen Eingabezeile. Daher wird es einfacher Scanner Klasse zu verwenden -Ist es optimal, BufferedReader anstelle der Scanner-Klasse für mehrere Ganzzahlen in einer einzigen Zeile in Java zu verwenden?
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
Bei Buffered Reader, werden Sie zum ersten Eingang haben eine Linie (da es keine Möglichkeit, readInt ist) und dann die Zeile parsen nach Anzahl der ganzen Zahlen auf sie -
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a,b;
String line = br.readLine();
String[] strs = line.trim().split("\\s+");
a=Integer.parseInt(strs[0]);
b=Integer.parseInt(strs[1]);
Obwohl die Eingabe in diesem Fall schneller kann, wird die Analyse viel Zeit in Anspruch nimmt die erhaltene Zeichenkette in indiviual ganzen Zahlen zu teilen? In so einem Fall, welcher der oben genannten ist optimal oder schneller?
Vielen Dank.
Wenn Sie es schaffen, den Unterschied tatsächlich wahrzunehmen, dann haben Sie ein ganz anderes Problem. – Fildor
Der schnellste Weg ist wahrscheinlich, einen Block von Bytes in ein Array zu lesen, über jedes Byte zu iterieren und Zeichenfolgen manuell in ganzzahlige Werte umzuwandeln. Dies vermeidet die Zuweisung von String-Objekten und den Aufruf von split() oder die Verwendung von Regexes. – Nayuki
Ich bin neu im Stack-Overflow, vielleicht hätte ich auf weitere Antworten warten sollen. Ihre Antwort funktionierte gut, aber Danke! – user8321763