2016-06-17 3 views
0

Ich habe die Anzahl solcher Fragen gelesen, aber sie sind alle über das Lesen von Eingaben aus einer txt Datei. Ich möchte Eingaben vom Benutzer und nicht von der Datei lesen.Lesen Strings durch Newline mit BufferedReader in ein String-Array getrennt

Ich habe Eingang wie folgt:

6 //number of total Strings to store in array 
babu 
anand 
rani  
aarti 
nandu 
rani 

ich den folgenden Code versucht haben, in einem String Array solche Eingabe zu nehmen:

int n = in.nextInt(); // n= 6 here 
    String[] s = new String[n]; //String array of size 6 here 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    try{ 
     s = br.readLine().split("\\s"); 
    } 
    catch(Exception e){ 
     System.out.println(e); 
    } 

die regex zum split() vorgesehen ist richtig oder nicht? Was ich hier vermisse? Wenn das nicht der richtige Ansatz ist, was sollte ich für dieses Problem tun?

Antwort

0

Regex verwenden Backslashes (\), während Sie Schrägstriche //s verwendet haben, richtig ist \\s.

Aber diese Aufteilung wird nicht benötigt, Sie brauchen nur die readLine, und Sie werden bekommen, was Sie brauchen (vorausgesetzt, Sie wollen Wörter in der Zeile nicht trennen).

sollten Sie eine Schleife verwenden, um alle Daten zu lesen (und Scanner loszuwerden, dass Sie in der in Variable zu haben scheinen):

String[] s = null 
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) { 
    int n = Integer.parseInt(br.readLine()); 
    for (int line = 0; line < n; line++) { 
     s[line] = br.readLine(); 
    } 
} catch(Exception e){ 
    System.out.println(e);  
} 
+0

aber wenn ich das Array druckt nichts gedruckt wird und ArrayOutOfBoundsException bei Index 1. –

+0

wenn ich nur readLine() als ich kann es nicht direkt in Array speichern –

+0

Ich möchte nicht Zeilen nacheinander lesen –

0
die dritte Zeile vor dem ersten Bewegen

.

Dann nutzen Sie diese in Ihrer neuen zweiten Zeile:

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

Und natürlich brauchen Sie eine Schleife, um Ihre Eingabe-Strings in ein Array zu setzen.

Dies sollte helfen.