1
resposta

Erro ao executar - printf(buscarPorArtista)

package br.com.alura.screenmatch.principal;

import br.com.alura.screenmatch.modelos.Filme; import br.com.alura.screenmatch.modelos.Serie; import br.com.alura.screenmatch.modelos.Titulo;

import java.util.ArrayList;

public class PrincipalComListas { public static void main(String[] args) { Filme meuFilme = new Filme("O poderoso chefão", 1970); meuFilme.avalia(9); Filme outroFilme = new Filme("Avatar", 2023); outroFilme.avalia(6); var filmeDoPaulo = new Filme("Dogville", 2003); filmeDoPaulo.avalia(10); Serie lost = new Serie("Lost", 2000);

    Filme f1 = filmeDoPaulo;

    ArrayList<Titulo> lista = new ArrayList<>();
    lista.add(filmeDoPaulo);
    lista.add(meuFilme);
    lista.add(outroFilme);
    lista.add(lost);
    for (Titulo item: lista) {
        System.out.println(item.getNome());
        if (item instanceof  Filme filme && filme.getClassificacao() > 2) {
            System.out.println("Classificação " + filme.getClassificacao());
        }

    }

    ArrayList<String> buscarPorArtista = new ArrayList<>();
    buscarPorArtista.add("Adam Sandler");
    buscarPorArtista.add("Paulo");
    buscarPorArtista.add("Jacqueline");
    System.out.printf(buscarPorArtista);
}

}

Estou com problema ao passar o objeto pelo printf, se eu colocar o .toString() compila, mas da forma do video não compila.

Erro: C:\Users\jpfra\Intellij\java-screenmatch-listas-colecoes\src\br\com\alura\screenmatch\principal\PrincipalComListas.java:39:19 java: no suitable method found for printf(java.util.ArrayList<java.lang.String>) method java.io.PrintStream.printf(java.lang.String,java.lang.Object...) is not applicable (argument mismatch; java.util.ArrayList<java.lang.String> cannot be converted to java.lang.String) method java.io.PrintStream.printf(java.util.Locale,java.lang.String,java.lang.Object...) is not applicable (argument mismatch; java.util.ArrayList<java.lang.String> cannot be converted to java.util.Locale)

1 resposta

Isso acontece porque o método printf exige como primeiro argumento uma String de formatação da saída. Vc está passando um List e a mensagem sobre o erro de conversão do tipo de argumento é clara: argument mismatch; java.util.ArrayList<java.lang.String> cannot be converted to java.lang.String.

Troque o método por print ou println se quiser passar a lista como argumento.

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