2015-01-07 6 views
0

가난한 제목에 대해 유감스럽게 생각합니다. 기본적으로 파일의 처음 6 줄을 보여주기 위해 아래 루프를 만들었습니다. 6 라인을 보여줄 때, 매번 다른 라인에 그 라인을 표시하는 방법을 모르겠습니다. 내가 가지고있는 가장 가까운 곳은 루프에 joptionpane을 포함하고 다음 줄에 다음 joptionpane을 표시하는 것입니다. 하단의 두 번째 joptionpane은 모든 라인을 표시하지만 다음 라인 대신에 같은 라인에 표시됩니다. 어떻게하면 매번 다음 라인에 나타나게 할 수 있습니까? \ n 작동하지 않는 것 같습니다.루프에서 다음 줄로 버퍼 처리기를 만드시겠습니까?

private static void doOptionTwo(int balance) throws IOException { 

    JOptionPane.showMessageDialog(null, "Option two selected "); 
    String sum = null; 
    BufferedReader br = null; 
    br = new BufferedReader(new FileReader("file1.txt")); 
    for (int i = 1; i <= 6; i++){ 
    String line1 = br.readLine(); 
    //JOptionPane.showMessageDialog(null, line1); 
      sum = sum + line1; 

    } 

    if (br != null)br.close(); 
    String log = sum; 
    JOptionPane.showMessageDialog(null, log); 

} 
+0

: 자바 8 년 이후 우리가'와'StringJoiner'을 사용할 수 있습니다 \ n – Stultuske

답변

1

그냥 문자열의 각 휴식 시간 삽입 : 대신 널 (null)로 초기화 문자열의

for (int i = 1; i <= 6; i++) { 
    String line1 = br.readLine(); 
    sum += line1 + "\n"; 
} 
3

사용하여 StringBuilder를. 다음 코드를 사용하여 원하는대로 할 수 있습니다.

StringBuilder stringBuilder = new StringBuilder(); 
String newLineCharacter = System.getProperty("line.separator"); 
for (int i = 1; i <= 6; i++){ 
    stringBuilder.append(br.readLine()); 
    stringBuilder.append(newLineCharacter);//note: will add new line at end as well.. 
} 
+1

더 나은 System.getProperty ("line.separator")'를 구분 기호로 사용하거나 System.getProperty ("line.separator")')보다 약간 짧은 코드 인 System.lineSeparator()를 사용합니다. – Pshemo

+0

예 StringJoiner .. Java 8에 동의합니다. – SMA

+0

'line.separator'의 사용법을 알려 주셔서 감사합니다. – Ascalonian

1

줄 사이에 "\n"을 추가하기 만하면됩니다.

String sum = ""; 
for (int i = 1; i <= 6; i++){ 
    String line1 = br.readLine(); 
    sum += line1 + "\n"; 
} 

더 적절하게는 StringBuilder을 사용하십시오.

StringBuilder sb = new StringBuilder(); 
for (int i = 1; i <= 6; i++){ 
    String line1 = br.readLine(); 
    if (sb.length() > 0) { 
     sb.append('\n'); 
    } 
    sb.append(line1); 
} 
String sum = sb.toString(); 
0

이 더 효율적입니다 :

당신은 휴식에 들어 정상적인 문자열과 동일한 이스케이프 문자를 사용
JOptionPane.showMessageDialog(null, "Option two selected "); 
    StringBuilder build = new StringBuilder(); 
    BufferedReader br = null; 
    br = new BufferedReader(new FileReader("file1.txt")); 
    for (int i = 1; i <= 6; i++){ 
    String line1 = br.readLine(); 
    //JOptionPane.showMessageDialog(null, line1); 
      build.append(sum).append("\n"); 
    } 

    if (br != null)br.close(); 
    System.out.println(build.toString()); 
+0

'build.append (sum + "\ n");로'StringBuilder'를 사용하는 목적이 죽었습니다. 대신에'build.append (sum) .append ("\ n");를 사용하십시오. – Pshemo

+0

아니, 그것은 apend(). apend()와 같은 것을 사용할 수있는 이유입니다. apend()는 초기화와 같은 클래스를 반환하기 때문에 체인을 연결합니다. "this"포인터는 기본적으로 Methods로 돌아갑니다. – neferpitou

+0

나는'build.append (sum + "\ n")'가'build.append (new StringBuilder (sum) .append ("\ n"). toString())'와 같은 것으로 컴파일 될 것이라는 것을 의미했다. 당신은 이미 존재하는 것을 사용하는 대신 새로운 StringBuilder를 생성한다. (이미 알고있는 것처럼'append'에 의해 반환 될 것이다.) – Pshemo