|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
[java]Stack OverFlow Error
Sto scrivendo un programma che di fatto è concettualmente semplice (si tratta di togliere una parte di stringa da file di input e riscriverlo in output)
il problema è che il programma parsa file da 10^5 righe, e incorro in uno StackOverflowError, posto il codice della classe, cosa mi consigliate? Codice:
public class spitfile {
Scanner input;
PrintStream ps;
StringBuilder[] sb;
public spitfile(String filename){
try{
input=new Scanner(new File(filename));
ps=new PrintStream("output.txt");
}
catch(Exception ex){
ex.printStackTrace();
}
}
public void run(String sep){
buffer(sep);
}
public void split(String sep){
for (int i = 0; i < sb.length; i++) {
StringBuilder stringBuilder = sb[i];
if (stringBuilder==null)return ;
int k=stringBuilder.indexOf(sep);
if(k!=-1)
sb[i]=stringBuilder.replace(k,sb.length,"");
}
write();
buffer(sep);
}
public void buffer(String sep){
sb=new StringBuilder[128];
for(int i=0;i<sb.length &&input.hasNext();i++){
sb[i]=new StringBuilder(input.next());
}
split(sep);
}
public void write(){
for (StringBuilder stringBuilder : sb) {
ps.println(stringBuilder.toString());
}
ps.flush();
}
}
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Ti consiglio di cambiare codice
Prova a renderlo iterativo, problemi non dovresti averne.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:39.



















