2015-01-07 2 views
0

Извините за плохой титул, не совсем понял, как это назвать! В основном я сделал цикл ниже, чтобы показать первые шесть строк из файла, получил это отсортировано. Когда дело доходит до показа шести строк, я не уверен, как заставить их появляться на другой строке каждый раз. Ближайший я получил, включал 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

Вы используете один и тот же побег символ, как и в обычной строки для разрыва: \ п – Stultuske

ответ

1

Просто вставьте перерыв каждый раз в строке:

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

Используйте StringBuilder вместо String, который инициализируется в нуль. Вы можете делать все, что вы хотите с помощью следующего кода:

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

Даже лучше, так как Java 8, мы можем использовать '' StringJoiner' с System.getProperty («line.separator») 'в качестве разделителя (или' System.lineSeparator() ', который немного короче, чем' System.getProperty («line.separator»)). – Pshemo

+0

Yeah 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() chain его, потому что возвращает тот же класс, что и Initialize. Указатель «this» возвращается к методам по умолчанию. – neferpitou

+0

Я имел в виду, что 'build.append (sum +" \ n ")' будет скомпилирован к чему-то вроде 'build.append (новый StringBuilder (sum) .append (" \ n "). ToString())', поэтому в каждом итерации вы создаете новый StringBuilder вместо того, чтобы использовать уже существующий (который будет возвращен 'append', как вы уже знаете). – Pshemo

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