2016-05-03 3 views
18

В Eclipse мне ничего не возвращает, это ожидаемое поведение?StringBuilder.toString() печатается как пустая строка в Eclipse-консоли при слишком большом?

StringBuilder sb = new StringBuilder(""); 
for(int i = 0; i < 256*256*2*6; i++) { 
    sb.append("a"); 
} 
System.out.println(sb.toString()); 

код возвращает без ошибок и размер хорошо withhin емкость памяти в отличие от Maximum number of characters stringbuilder can accommodate

Решено: Проблема заключается в консоли затмений и включение (Window -> Preferences -> Run/Debug -> Консоль -> консоль с фиксированной шириной) будет печатать линию нормально.

+3

Нет, у вопросов есть ошибка, в то время как мой только что закончил нормально, но ничего не возвращает. Также мой номер не так велик и по-прежнему имеет диапазон int 8 + 8 + 1 + 3 = 20 бит. – HopefullyHelpful

+3

его отлично работает, просто проверьте здесь> https://ideone.com/nE6vEB –

ответ

31

Возможно, проблема в том, что ваша консоль не может напечатать такую ​​длинную строку. Если вы попробуете:

System.out.println(sb.toString().length()); 

вместо этого, it will print what you expect (786432).

+1

Я попытался в eclipse, действительно, он не работает, хотя буфер консоли достаточно велик. Он больше связан с длиной _line_, потому что добавление 'a \ n' вместо' a' отображает весь контент в моем случае. – Berger

+0

@Berger У вас есть * Limit Console Output * unchecked в Eclipse (Window -> Preferences -> Run/Debug -> Console)? Btw, max для 'System.out.println' равен' Integer.MAX_VALUE' (2 147 483 647), если я не ошибаюсь, это максимум, который может содержать массив, а String - char []. –

+0

@Kevin Cruijssen: я отключил ограничение, но огромная строка не отображалась. – Berger