2016-06-17 1 views
0

이러한 질문을 읽었지만 모두 txt 파일에서 입력을 읽는 것이 중요합니다. 나는 파일로부터가 아니라 사용자로부터 입력을 읽고 싶다.Read 문자열 배열로 BufferedReader를 사용하여 개행 문자로 구분했습니다.

나는 다음과 같이 입력을했습니다 : 나는 다음 코드를 시도했습니다

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

String 배열에 같은 입력을 위해 :

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); 
    } 

split()에 제공되는 regex가 올바른지인가 안 그래? 여기서 내가 놓친 게 뭐야? 이것이이 문제에 대해 내가해야 할 일보다 올바른 접근법이 아니라면?

답변

0

정규식은 슬래시 //s을 사용하는 동안 백 슬래시 (\)를 사용하고 있습니다. 올바른 것은 \\s입니다.

하지만이 분할은 필요하지 않으며 readLine 만 있으면됩니다. 원하는 단어를 얻을 수 있습니다 (줄의 단어를 분리하지 않으려는 경우).

당신은 (당신이 in 변수에 가지고 나타나는 및 스캐너 제거) 모든 데이터를 읽어 루프를 사용해야합니다

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

는하지만 난 배열 아무것도 인쇄하지 않을 때 인쇄와 내가 직접 배열 –

+0

에 arrayOutOfBoundsException을 제공합니다 –

+0

에 저장할 수 없습니다보다 단지 내의 readLine()가 나는 하나 선 하나를 읽을 수 없다 사용하는 경우는 인덱스 1 –

0
는 첫 번째 전에 세 번째 줄을 이동

.

그런 다음 새 두 번째 줄에서 이것을 사용

INT의 N =있는 Integer.parseInt (br.readLine());

물론 입력 문자열을 배열에 넣으려면 루프가 필요합니다.

도움이 될 것입니다.