Ajuda numa pesquisa com arraylist

8 respostas
robson_duarte1
Olá amigos eu tenho o seguinte código.
view plaincopy to clipboardprint?
import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileOutputStream;  
import java.io.FileReader;  
import java.io.IOException;  
import java.text.SimpleDateFormat;  
import java.util.ArrayList;  
import java.util.Collections;  
  
public class rotina_2 {  
  
    public static void main(String[] args) {  
        // faz o caminho até chegar aos arquivos txt.  
        File fileCarregar = new File(  
                "/opt/workspace/restaurante/rotina_restaurante/COLETA.txt");  
  
        try {  
            FileReader readerColeta = new FileReader(fileCarregar);  
            BufferedReader inputColeta = new BufferedReader(readerColeta);  
            // faz o caminho até chegar aos arquivos txt.  
  
            String linhaColeta;  
            String linhaCracha;  
            String linhaData;  
  
            ArrayList<String> coleta = new ArrayList<String>();//aki ele fica com a seguinte linha 99043591 codigo do cracha  
            while ((linhaColeta = inputColeta.readLine()) != null) {//161110 data que ele passou o ponto  
                coleta.add(linhaColeta.substring(18));  
                coleta.add(linhaColeta.substring(2,8));  
                Collections.sort(coleta);  
            }  
  
            // SimpleDateFormat dataFormatada = new  
            // SimpleDateFormat("dd/MM/yy");  
            // String data = linhaColeta.substring(2,8);  
  
            fileCarregar = new File(  
                    "/opt/workspace/restaurante/rotina_restaurante/cracha.txt");  
            FileReader readerCracha = new FileReader(fileCarregar);  
            BufferedReader inputCracha = new BufferedReader(readerCracha);  
  
            ArrayList<String> cracha = new ArrayList<String>();//nesse ele vai retornar 00200682    99043591    IGOR SOUZA SOARES  
            while ((linhaCracha = inputCracha.readLine()) != null) {  
                cracha.add(linhaCracha);  
                Collections.sort(cracha);  
            }  
              
            fileCarregar = new File(  
            "/opt/workspace/restaurante/rotina_restaurante/COLETA.txt");  
            FileReader readerData = new FileReader(fileCarregar);  
            BufferedReader inputData = new BufferedReader(readerData);  
  
            ArrayList<String> data = new ArrayList<String>();//aki ele vai retornar a data 00200682  
            while ((linhaData = inputData.readLine()) != null) {  
                data.add(linhaData.substring(2, 8));  
                Collections.sort(data);  
            }  
  
            int cont = 0;  
            // StringBuffer pegaData = new StringBuffer();  
            ArrayList<String> resposta = new ArrayList<String>();  
            ArrayList<Integer> contador = new ArrayList<Integer>();  
            ArrayList<String> pegaData = new ArrayList<String>();  
            for (int i = 0; i < cracha.size(); i++) {//aki ele percorre todo o cracha  
                cont = 0;  
                for (int j = 0; j < coleta.size(); j++) {//aki ele percorre toda a coleta  
                    if (cracha.get(i).contains(coleta.get(j))) {//nesse if se o numero do cracha tiver armazenado na coleta ele add 1  
                        cont++;                                 //exemplo 00200682  99043591    IGOR SOUZA SOARES 5 ele passou 5 vezes  
                        for (int d = 0; d < data.size(); d++) {//aki esta o problema eu preciso adicionar a data que ele passou  
                            if (coleta.get(j).contains(data.get(d))) {//mas não está funcionando o que estaria de errado  
                                pegaData.add(data.get(d));//teria que ficar assim 00200682  99043591    IGOR SOUZA SOARES 5 021210 031210 041210   
                            }                                                                                       //051210 061210  
                        }  
                    }  
                }  
                resposta.add(cracha.get(i));  
                // System.out.println(pegaData);  
                // resposta.add(cracha.get(i));  
                contador.add(cont);  
                pegaData.clear();  
            }  
            fileCarregar = new File(  
                    "/opt/workspace/restaurante/rotina_restaurante/resposta.txt");  
            FileOutputStream carregarResposta = new FileOutputStream(  
                    fileCarregar);  
            String texto = "";  
            for (int k = 0; k < resposta.size(); k++) {  
                texto = resposta.get(k) + "\t" + contador.get(k) + "\n";  
                carregarResposta.write(texto.getBytes());  
                System.out.println(resposta.get(k) + "\t" + contador.get(k));  
  
            }  
            inputColeta.close();  
        } catch (IOException ioe) {  
            System.out.println(ioe);  
  
        }  
  
    }

Alguem poderia me ajudar com esse problema que eu não estou conseguindo resolver?
desde já agradeço.

8 Respostas

drsmachado

“La pregunta?”
Se minha bola de cristal funcionou, o problema é que você não está recebendo a data?

robson_duarte1

drsmachado:
“La pregunta?”
Se minha bola de cristal funcionou, o problema é que você não está recebendo a data?

isso mesmo ele nem entra na hora de pesquisar as datas.

drsmachado

Debuga e vê o que ele está recebendo nestas linhas

while ((linhaData = inputData.readLine()) != null) {    
                data.add(linhaData.substring(2, 8));    
                Collections.sort(data);    
            }
robson_duarte1

drsmachado:
Debuga e vê o que ele está recebendo nestas linhas

while ((linhaData = inputData.readLine()) != null) { data.add(linhaData.substring(2, 8)); Collections.sort(data); }

nessa linha ele esta carregando legal ele recebe todas as datas exemplo 021210 que seria 02/12/10
o problema está aki for (int i = 0; i < cracha.size(); i++) {//aki ele percorre todo o cracha cont = 0; for (int j = 0; j < coleta.size(); j++) {//aki ele percorre toda a coleta if (cracha.get(i).contains(coleta.get(j))) {//nesse if se o numero do cracha tiver armazenado na coleta ele add 1 cont++; //exemplo 00200682 99043591 IGOR SOUZA SOARES 5 ele passou 5 vezes for (int d = 0; d < data.size(); d++) {//aki esta o problema eu preciso adicionar a data que ele passou if (coleta.get(j).contains(data.get(d))) {//mas não está funcionando o que estaria de errado pegaData.add(data.get(d));//teria que ficar assim 00200682 99043591 IGOR SOUZA SOARES 5 021210 031210 041210 } //051210 061210 } } }
no for que ele compara a data.size ele nem entra nesse for e nao mostra as datas que esse funcionario esteve na empresa.

drsmachado

Sim, pois o ArrayList está com size() = 0. Se fosse maior, ele entraria.

Debuga e confere…

robson_duarte1

Mas como que no outro for ele entra?
vou testar.

robson_duarte1

drsmachado:
Sim, pois o ArrayList está com size() = 0. Se fosse maior, ele entraria.

Debuga e confere…

Ele esta entrando no for mas quando esta dentro do if ele não encontra nada mas eu sei que tem data iguais
será que meu if esta errado?

robson_duarte1

Alguem poderia me ajudar para resolver esse topico?

Criado 25 de maio de 2011
Ultima resposta 27 de mai. de 2011
Respostas 8
Participantes 2