For não funciona perfeitamente com variáveis globais

mostra qual é o erro que aparece.

Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 0
at dao.Ligacao.recuperaligacoes(Ligacao.java:103) (é a linha identificada abaixo)

at chronos.Relatorio.relatorio_diaActionPerformed(Relatorio.java:103)
at chronos.Relatorio.access$000(Relatorio.java:18)
at chronos.Relatorio$1.actionPerformed(Relatorio.java:54)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Isso acontece quando você tenta acessar uma posição que não existe no seu vetor.

Você esta declarando um vetor com tamanho definido para receber um resultado de uma busca, mas não tem como saber quantos registros vão ser retornados pelo seu Banco de Dados, então não da pra usar um vetor para receber os dados que estão sendo buscados.

Vai ter que criar um ArrayList.

ArrayList<String> ligacoes = new ArrayList<String>();

dentro do While você cria uma String para receber o resultado e depois adiciona na ArrayList.

 while (rs.next()) {
    String resultado = new String();
    resultado= rs.getString("duracao");
    ligacoes.add(resultado);
}

Seu array está sendo inicializado com tamanho 0.

Coloquei em arraylist, e o resultado está saindo dessa forma:

Contagem Tempo

0 [00:00:01]

1 [00:00:01, 00:00:02] // deveria aparecer só o 00:00:02

2 [00:00:01, 00:00:02, 00:00:03] // deveria aparecer só o 00:00:03

3 [00:00:01, 00:00:02, 00:00:03, 00:00:05] // deveria aparecer só o 00:00:05

Como eu faço pra mostrar apenas o valor necessário?

@staroski então eu deveria inicializar o array como?

Sim, eu estou trabalhando com duas codificações pra mesma coisa agora, fazendo com arraylist, e com o array puro.

Pelo que entendi o seu método recuperaContagem() deveria retornar um número, que você usa como tamanho do array.
Mas se seu método retorna 0, você é que tem que analisar o que está errado.
Mas se você está usando uma lista, não precisa do array.

Fazendo o print somente do que você quer e não da lista inteira.

Acho que você tem que ficar mais em lógica, faz uns testes de mesa.
Você não vai aprender na tentativa e erro.

Pelo que entendi o seu método recuperaContagem() deveria retornar um número, que você usa como tamanho do array.
Mas se seu método retorna 0, você é que tem que analisar o que está errado.
Mas se você está usando uma lista, não precisa do array.

Ele retorna. Eu deixo dentro do método um sop que informa qual o valor que é retornado, e ele sempre retornou resultado e talz. O que pega é justamente na hora de preencher o array.

Fazendo o print somente do que você quer e não da lista inteira.

Ah ta, achei que era só colocar sop e pronto nesse caso.

Acho que você tem que ficar mais em lógica, faz uns testes de mesa.
Você não vai aprender na tentativa e erro.

Por mais incrível que possa não parecer, eu faço, eu analiso, eu tento na medida das minhas possibilidades. Inclusive eu mencionei que estava fazendo em array e lista, pra entender as diferenças, e poder adquirir mais conhecimento.

De qq forma, eu levei o meu código pra casa ontem a noite, e rodei na minha máquina. Mesmo com a questão da lista, o programa funcionou perfeitamente, o que me leva a crer que o problema é na máquina que eu operava o código…

Agradeço a todos pela ajuda, e sinto que deveria pagar uma cerveja pra cada um que me ajudou…rs