Ola pessoal. Estou com um pequeno problema que não consigo entender. O algoritmo é um ordenador de números inteiros chamado Bubblesort. O problema surge na hora de salvar um novo arquivo com todos os números ordenados que estão dentro de um vetor, por alguma razão ao invés de gravar 10 mil números, ele grava apenas 5806. Tentei com arquivos com 50 mil e 100 mil e parece sempre faltar parte dos números no novo arquivo gerado.
obs: O arquivo de leitura está em anexo.
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import javax.swing.JFileChooser;
public class BubbleSort {
public static void main(String[] args) throws Exception {
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(null);
String n = "";
String VetorDeString = "";
if (returnVal == JFileChooser.APPROVE_OPTION) {
File f = chooser.getSelectedFile();
BufferedReader reader = new BufferedReader(new FileReader(f));
while ((n = reader.readLine()) != null) {
VetorDeString += n;
}
StringTokenizer st = new StringTokenizer(VetorDeString);
int i = 0;
int Total = st.countTokens();
String[] vetor2 = new String[Total];
while (st.hasMoreTokens()) {
vetor2[i] = st.nextToken();
i++;
}
int[] vetor = new int[Total];
for (int k = 0; k < Total; k++) {
vetor[k] = Integer.parseInt(vetor2[k]);
}
int aux, for1, for2;
System.out.println("*******Ordenando*******\n");
for (for1 = 0; for1 < i; for1++) {
for (for2 = 0; for2 < i - 1; for2++) {
if (vetor[for2] > vetor[for2 + 1]) {
aux = vetor[for2];
vetor[for2] = vetor[for2 + 1];
vetor[for2 + 1] = aux;
}
}
}
File arquivo = new File("C:\\DezMil.txt");
PrintWriter printWriter = new PrintWriter(arquivo);
int k, auxiliar = 0;
for (k = 0; k < Total; k++) {
//auxiliar = vetor[k];
//printWriter.write(auxiliar + " ");
printWriter.print(vetor[k] + " ");
}
}
}
}
Agradeço a paciência.