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

Problema com Format

Olá professores e colegas...

No Java parte 7, aula 4, na vídeo-aula sobre formatação de valores, quando eu coloquei o código extamente igual o professor descreveu:

System.out.format(new Locale("pt", "BR"), "%s - %04d-%08d, %20s: %05.2f %n", tipoConta, agencia, numero, titular, saldo);

O format não roda de jeito nenhum! Ele fica vermelho e o Eclipse nem sequer dá uma opção de correção, eu já fucei e não consegui arrumar. A mensagem que ele dá é: "O formato do método (Locale, String, Object[]) no tipo PrintStream não é aplicavel para os argumentos (Locale, String, String, int, int, String, double)". Não sei se na hora da escrever todo o código da sessão faltou algo, mas já fiz, refiz e até agora não consegui arrumar. Alguém, por gentileza, saberia resolver essa situação?

Att, Pedro Cabral.

9 respostas

Olá Pedro,

estranho, pois esse código que você mandou eu testei aqui e executou. Me manda o código completo para eu dar uma olhada o que tem na classe, inclusive os imports.

Olá, Lucas. Segue o código abaixo:

package br.com.alura.java.io.teste;

import java.io.File;
import java.util.Locale;
import java.util.Scanner;

public class TesteLeituraScanner {

    public static void main(String[] args) throws Exception {

        Scanner scanner = new Scanner(new File("contas.csv"), "UTF-8");
        while(scanner.hasNextLine()) {
            String linha = scanner.nextLine();
//            System.out.println(linha);

            Scanner linhaScanner = new Scanner(linha);
            linhaScanner.useLocale(Locale.US);
            linhaScanner.useDelimiter(",");

            String tipoConta = linhaScanner.next();
            int agencia = linhaScanner.nextInt();
            int numero = linhaScanner.nextInt();
            String titular = linhaScanner.next();
            double saldo = linhaScanner.nextDouble();

            System.out.format(new Locale("pt","BR"), "%s - %04d-%08d, %20s: %08.2f %n",
                    tipoConta, agencia, numero, titular, saldo);;

            linhaScanner.close();

//            String[] valores = linha.split(",");
//            System.out.println(valores[3]);
        }
        scanner.close();
    }
}

Desde já, agradeço a ajuda.

Att, Pedro.

Estranho, eu testei aqui e não deu nenhum erro de compilação na minha máquina. Qual versão do java você está usando?

No seu caso é erro de compilação né? Uma coisa que você pode fazer é tentar limpar o projeto, no eclipse no menu superior deve ter uma opção Project > Clean... que recompila todo o projeto. Vê se isso resolve o problema.

Ola amigo! você recebe alguma exeption? porque eu fiz o teste aqui e não tive problemas, olha eu nao sei muito sobre esse universo do java ainda to aprendendo algumas coisas mas minha suspeita que possa ser o arquivo contas.csv, pois aqui quando eu retiro ele essa linha fica vermelha (System.out.format(new Locale("pt","BR"), "%s - %04d-%08d, %20s: %08.2f %n", tipoConta, agencia, numero, titular, saldo);; ) e diz que ela nao pode ser iniciada sem valores, vou continuar a busca informação qualquer coisa comenta aqui.

Olá, colegas. Nem com a opção do Lucas e nem a do Haryel funcionou. Já resetei o projeto e mesmo assim nada. Eu estava usando a versão 10.0.1 (a mesma que o professor usou no vídeo). Atualizei para a 10.0.2 e o erro continua. Realmente, não sei o que é. Deve ser alguma coisa besta que ainda não achei.

Olá Pedro,

mas quando você fala em erro é de compilação ou de execução?

Lucas, é erro de compilação. No código a listra não fica amarela, fica aquela listra vermelha embaixo do "format" mas o eclipse não dá nem sequer alguma opção de correção. Aí quando vou executar o código ele dá aquela mesma mensagem que eu postei no primeiro post: "Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method format(Locale, String, Object[]) in the type PrintStream is not applicable for the arguments (Locale, String, String, int, int, String, double)".

solução!

Sua IDE está com algum problema com o compilador, porque esse erro de não encontrar este método format do varargs em geral ocorre em versões anteriores ao Java 5... Seria bom verificar o que verificar no eclipse qual o compilador padrão que ele está usando nos projetos.

Clica com o botão direito no projeto e vá navegando pelas opções Project > Properties > Java Compiler. Caso a opção Enable project specific settings não esteja selecionada, clica em Configue Workspace Settings... . Veja qual a versão selecionada em Compiler compliance level, tem que ser a 1.5 ou posterior pelo menos.

Lucas... Você é o cara! A compilação estava 1.4. Coloquei para 1.5 e a listra vermelha sumiu. Agora está rodando perfeitamente! Muito obrigado!