Problema com lógica

Preciso fazer um trabalho pra faculdade, construir um sistema bancário simples.
Ja esta pronto, só não estou conseguindo fazer um método para remover a conta com menor saldo.

listConta é um arraylist

[code]public void remover() {
double menorSaldo = 0;
int indiceMenorSaldo = 0;
int i = 0;

    try {
        for (i = 0; i < listConta.size(); i++) {
            if (i == 0) {
                menorSaldo = listConta.get(i).getSaldo();
                indiceMenorSaldo = i;

            }

            if (menorSaldo > listConta.get(i).getSaldo()) {
                menorSaldo = listConta.get(i).getSaldo();
                indiceMenorSaldo = i;
            }

            i++;

        }


        JOptionPane.showMessageDialog(null, "Conta número: " + listConta.get(indiceMenorSaldo).getNumeroConta()
                + "\nNome: " + listConta.get(indiceMenorSaldo).getNome()
                + "\nSaldo: R$" + listConta.get(indiceMenorSaldo).getSaldo()
                + "\n   Excluida com sucesso", "Excluir", JOptionPane.INFORMATION_MESSAGE);
       listConta.remove(indiceMenorSaldo);

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Não há contas cadastradas", "Erro", JOptionPane.ERROR_MESSAGE);
        System.out.println(e.getMessage());
    }
}[/code]

Se cadastro 3 contas com saldos, 300, 400 e 500. Funciona.
Mas se cadastro 500, 400 e 300. Remove na ordem 300, 500 e 400.

Grato.

Tu estás incrementando o contador duas vezes, o i++ da linha 19 não é necessário.

Bom já fazendo a alteração que sgaothaich fez e ainda outra, a primeira comparação que estais fazendo é desnecessária, já que o primeiro item da lista sempre será o menor não é necessário fazer essa comparação dentro do for

public void remover() {
        double menorSaldo = 0;
        int indiceMenorSaldo = 0;
        int i = 0;

        try {
            menorSaldo = listConta.get(i).getSaldo();
            indiceMenorSaldo = i;

            for (i = 1; i < listConta.size(); i++) {


                if (menorSaldo > listConta.get(i).getSaldo()) {
                    menorSaldo = listConta.get(i).getSaldo();
                    indiceMenorSaldo = i;
                }

            }


            JOptionPane.showMessageDialog(null, "Conta número: " + listConta.get(indiceMenorSaldo).getNumeroConta()
                    + "\nNome: " + listConta.get(indiceMenorSaldo).getNome()
                    + "\nSaldo: R$" + listConta.get(indiceMenorSaldo).getSaldo()
                    + "\n   Excluida com sucesso", "Excluir", JOptionPane.INFORMATION_MESSAGE);
           listConta.remove(indiceMenorSaldo);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Não há contas cadastradas", "Erro", JOptionPane.ERROR_MESSAGE);
            System.out.println(e.getMessage());
        }
    }

pronto assim nem vai ficar pulando duas posições e fazendo comparações desnecessarias

Thx vcs são ninjas :smiley:
Tinha feito com while, depois fiz com for e não tirei o incremento.