Erro ao popular Array de strings

8 respostas
by_stoco

Salve a todos!!!

Não sei o que pode estar acontecendo.... Estou criando um gráfico com ChartDirector em um servlet e tem métodos da API que só aceitam array de strings ou double.
Estou instanciando meus arrays para gerar os gráficos mas quando tento popular um array ele encerra a execução como fosse um erro.

double dtDP[] = {};
            double dtAcumulado[] = {};
            double dtQuantTotal[] = {};
            double dtPorcentagem[] = {};
            String meses[] = new String[12];

            Calendar data = Calendar.getInstance();
            int mesAtual = data.get(Calendar.MONTH) + 1;
            int quantColabDP = 0;
            for (int mes = 1; mes <= 12; mes++) {
                if (mes <= mesAtual) {
                    quantColabDP = daoLap.QuantColaboradoresDPmes(mes, listaColab);
                } else {
                    quantColabDP = 0;
                }
                meses[mes] = funcao.NomeMes(mes);
                dtDP[mes] = quantColabDP;//Dupla Participação
                acumulado += quantColabDP;
                dtAcumulado[mes] = acumulado;
                percent = ((double) acumulado / quantColab) * 100;
                dtQuantTotal[mes] = quantColab;
                dtPorcentagem[mes] = percent;
                quantColabDP = 0;
            }

Se eu monto um ArrayList(), depois eu não consigo convertê-lo para String[]. Alguem sabe como????

Já fiz testes com os resultados e estão funcionando Ok......

Alguém pode me ajudar por favor!!!!!
GRATO.

8 Respostas

fabim

que tal?

String[] arrayString = new String[12];
     seuArrayList.toArray( arrayString );
by_stoco

Pow bacana… Com o de String funcionou, mas os com os valores double não.

ArrayList<Double> dtDP = new ArrayList<Double>();
ArrayList<Double> dtAcumulado = new ArrayList<Double>();

double[] aDP = new double[12];
dtDP.toArray(aDP);

double[] aAcumulado = new double[12];
dtAcumulado.toArray(aAcumulado);

e aí??? pode me ajudar novamente???
Valew mesmo…

fabim

O problema é que na interface esta definido toArray( Object array[] ), e como String herda de Object tudo blz, mas o mesmo nao acontece com tipos primitivos.

Se vc trocar o array de primitivos pra um wrapper - Double[] - deve funcionar.

by_stoco

Camarada!!!

Por que eu não consigo implementar o códgio?

for (int mes = 1; mes <= 12; mes++) {
    Double[] acumulado = new Double[12];
    acumulado[mes] = valor;
}
fabim

by_stoco:
Camarada!!!

Por que eu não consigo implementar o códgio?

for (int mes = 1; mes <= 12; mes++) { Double[] acumulado = new Double[12]; acumulado[mes] = valor; }

Essa sua variável valor é de q tipo?

by_stoco

CORRIGINDO

Double[] acumulado = new Double[12]; for (int mes = 1; mes <= 12; mes++) { acumulado[mes] = valor; }

fabim

Seu codigo tem um erro que provavelmente irá lancar uma ArrayIndexOfBoundsException.

Vc esta iterando com elementos de 1 a 12 no array. Entretanto, arrays em Java são 0-based.
Se vc declarou seu array com 12 elementos, as posições vao de 0 a 11.
Qdo o laço for atinge a posição acumulado[12] dá pau.

Altere a condição do laço pra ( int mes = 0; mes < acumulado.length; mes++ ) // length ja te retorna o tamanho do array

by_stoco

Puxa vida cara!
Q erro primário o meu…
Tudo bem, foi falta de atenção minha!
Brigadão

Criado 27 de março de 2008
Ultima resposta 27 de mar. de 2008
Respostas 8
Participantes 2