2016-05-03 18 views
18

Quanto segue non restituisce nulla per me in eclissi, è questo comportamento previsto?StringBuilder.toString() viene stampato come stringa vuota in Eclipse-console quando è troppo grande?

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

Il codice restituisce senza errori e la dimensione è ben withhin capacità di memoria a differenza di Maximum number of characters stringbuilder can accommodate

risolto: Il problema sta nella console eclisse e consentendo (Finestra -> Preferenze -> Esegui/Debug -> Console -> console larghezza fissa) stamperà normalmente la linea.

+3

No, le domande hanno un errore, mentre il mio ha appena finito normalmente ma non restituisce nulla. Anche il mio numero non è quasi altrettanto grande e continua ad avere un intervallo int 8 + 8 + 1 + 3 = 20 bit. – HopefullyHelpful

+3

funziona perfettamente solo qui> https://ideone.com/nE6vEB –

risposta

31

Il problema è probabilmente che la console non è in grado di stampare una stringa così lunga. Se si tenta:

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

invece, it will print what you expect (786432).

+1

Ho provato in eclissi, infatti non funziona, anche se il buffer della console è abbastanza grande. Sembra più correlato alla lunghezza della _line_, perché l'aggiunta di 'a \ n' invece di' a', mostrerà l'intero contenuto nel mio caso. – Berger

+0

@Berger Hai * Limit Output Console * deselezionato in Eclipse (Finestra -> Preferenze -> Esegui/Debug -> Console)? Btw, il massimo per 'System.out.println' è uguale a' Integer.MAX_VALUE' (2.147.483.647) se non sbaglio, questo è il massimo che un array può contenere e un String è un carattere []. –

+0

@Kevin Cruijssen: ho disabilitato il limite, ma l'enorme linea non è stata visualizzata. – Berger