Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro de compilação no comando foreach

Estou tentando montar o exercício da aula 07 - Ordenação de listas, do Curso de Java parte 6: Conhecendo o java.util, porém o comando foreach apresenta os seguintes erros e não compila:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: Syntax error on token "Conta", ? expected after this token Conta cannot be resolved to a variable conta cannot be resolved to a variable Syntax error, insert ";" to complete Statement conta cannot be resolved to a variable

at br.com.byteBank.banco.teste.util.Teste.main(Teste.java:36)

Já comparei meu código (abaixo) com o do professor e não encontrei a diferença.

Poderiam por gentileza me ajudar?

Obrigada.

package br.com.byteBank.banco.teste.util;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

import br.com.byteBank.banco.modelo.Conta;
import br.com.byteBank.banco.modelo.ContaCorrente;
import br.com.byteBank.banco.modelo.ContaPoupanca;

public class Teste {

    public Teste() {
    }

    public static void main(String[] args) {

    Conta cc1 = new ContaCorrente(22, 33);
        cc1.deposita(333.0);

        Conta cc2 = new ContaPoupanca(22, 44);
        cc2.deposita(444.0);

        Conta cc3 = new ContaCorrente(22, 11);
        cc3.deposita(111.0);

        Conta cc4 = new ContaPoupanca(22, 22);
        cc4.deposita(222.0);

        List<Conta> lista = new ArrayList<>();
        lista.add(cc1);
        lista.add(cc2);
        lista.add(cc3);
        lista.add(cc4);

       foreach (Conta conta : lista) {
            System.out.println(conta);
        }

        NumeroDaContaComparator comparator = new NumeroDaContaComparator();

        System.out.println("---------");

        lista.sort(comparator);

        for (Conta conta : lista) {
            System.out.println(conta);
        }

    }

    class NumeroDaContaComparator implements Comparator<Conta> {

        @Override
        public int compare(Conta c1, Conta c2) {

                if(c1.getNumero() < c2.getNumero()) {
                    return -1;
                }

                if(c1.getNumero() > c2.getNumero()) {
                    return 1;
                }

            return 0;
        }
    }

}
2 respostas
solução!

Oi Adriana, tudo bem com você?

Aparentemente houve um erro na transcrição do vídeo, essa parte do código está errada:

foreach (Conta conta : lista) {
    System.out.println(conta);
}

O correto é apenas for:

for (Conta conta : lista) {
    System.out.println(conta);
}

Esse erro provavelmente se deve pelo fato de você poder criar esse enhanced for escrevendo foreach e depois dando um Ctrl + Espaço. Se você for no minuto 13:06 do vídeo, o Nico mostra o enhanced for sendo implementado.

Eu vou pedir para corrigirem essa parte para não confundir mais ninguém! :(

Espero ter ajudado, se surgir qualquer dúvida estou à disposição!

Bons estudos!!

Muito obrigada Thiago, era isso mesmo!

Corrigi o código e funcionou.

Att., Adriana.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software