Ir ao conteúdo
  • Cadastre-se
Francine Guimarães

Java erro no printf com eclipse

Recommended Posts

Eu comecei a usar agora o eclipse e tenho que fazer um código usando saídas simples, só com println e printf mesmo, só que na hora de usar o printf sempre da erro. O estranho é que copiei o código pro Netbeans e funcionou perfeitamente. Só no eclipse que da erro mesmo. Já revisei o código todo e não consigo achar erro algum.

 

 

String product1 = "Computer";

String product2 = "Office desk";

 

byte age = 30;

int code = 5290;

char gender = 'F';

 

double price1 = 2100.0;

double price2 = 650.50;

double measure = 53.234567;

 

System.out.println("Products:");

System.out.printf("%s, which price is $ %.2f%n", product1, price1);

System.out.printf("%s, which price is $ %.2f%n", product2, price2);

System.out.println();

System.out.printf("Record: %d years old, code %d and gender: %c%n", age, code, gender);

System.out.println(); System.out.printf("Measure with eight decimal places: %.8f%n", measure);

System.out.printf("Rouded (three decimal places): %.3f%n", measure);

Locale.setDefault(Locale.US);

System.out.printf("US decimal point: %.3f%n", measure);[

  • Curtir 1
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Francine Guimarães Olá. Por quê esse sinal no final do código: 

1 hora atrás, Francine Guimarães disse:

System.out.printf("US decimal point: %.3f%n", measure);[

Esse abre colchetes [ no final da linha?

Aqui funcionou tudo ok no Eclipse. 

Obs: Não seria '\n' ao invés de '%n'? Sinceramente não sei do q se trata esse '%n'

O '\n' seria o caractere de escape referente a quebra de linha. Já esse '%n' té então não tinha visto 

Logo, seria isso:

System.out.printf("%s, which price is $ %.2f\n", product2, price2);

Apenas como exemplo peguei essa linha

Se puder explicar o q seria esse '%n' agradeceria muito

https://pt.stackoverflow.com/questions/7448/usando-quebra-de-linha-n-no-java

Ops: Atualizando... o '%n' em Java funciona como quebra de linha :)

 

Editado por giu_d
corrigir comentário
  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

o colchetes eu digitei sem querer quando colei o código aqui 

adicionado 5 minutos depois
5 horas atrás, giu_d disse:

Aqui funcionou tudo ok no Eclipse. 

Aqui não funciona de jeito nenhum e o \n não altera nada, é só um quebra linha como o %n, como falasse.

Ele retorna esse erro:
 

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, String, double)
    The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, String, double)
    The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, byte, int, char)
    The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, double)
    The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, double)
    The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, double)

    at course.Program.main(Program.java:24)

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta importar a biblioteca locale do java.util talvez seja isso que você está se esquecendo.

import java.util.Locale;

 

Outra coisa essa linha ...

        System.out.println();

... tira ela, porque ela não imprimi nada rsrsrs;

 

Abraços. Espero que seja este o problema, post feedback please!

Editado por edifesf10
Faltou detalhes
  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Francine Guimarães Olá. Experimenta dar uma olhada nesse link p ver se ajuda:

https://stackoverflow.com/questions/7774428/the-method-printfstring-object-in-the-type-printstream-is-not-applicable-fo/7774666

Também encontrei isso em outro post:

Acontece que as pastas do projeto no Eclipse são executadas em suas próprias propriedades separadas das configurações principais do Eclipse. Para que possam compilar na versão 1.6 / 1.7 / 1.8, é necessário alterar suas propriedades separadamente das configurações principais ...

Basicamente, em vez de ir ao windows> preferances ... para alterar e atualizar a versão do compilador, clique com o botão direito do mouse na pasta do projeto em Package Explorer> Properties> Java Compiler, marque as configurações específicas do Enable Project e altere as configurações abaixo. nível de 1,5 ou superior para que este código acima funcione.

Se o erro persistir experimenta essa formatação:

import java.util.Locale;

public class Aplicacao {

    public static void main(String[] args) {


        String product1 = "Computer";

        String product2 = "Office desk";


        byte age = 30;

        int code = 5290;

        char gender = 'F';


        double price1 = 2100.0;

        double price2 = 650.50;

        double measure = 53.234567;


        System.out.format("Products: ");

        System.out.println("\n");

        System.out.format("%s, which price is $ %.2f%n", product1, price1);

        System.out.format("%s, which price is $ %.2f%n", product2, price2);

        System.out.println();

        System.out.format("Record: %d years old, code %d and gender: %c%n", age, code, gender);

        System.out.println();

        System.out.format("Measure with eight decimal places: %.8f%n", measure);

        System.out.format("Rouded (three decimal places): %.3f%n", measure);

        Locale.setDefault(Locale.US);

        System.out.format("US decimal point: %.3f%n", measure);
    }

}

Aqui tbém funcionou tudo certo dessa forma no Eclipse

Editado por giu_d
corrigir comentário
  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 minutos atrás, edifesf10 disse:

Tenta importar a biblioteca locale do java.util talvez seja isso que você está se esquecendo.

import java.util.Locale;

Eu já importei ela. Só não colei o comecinho do código, aí não apareceu ela.

adicionado 4 minutos depois

@giu_d Fiz as alterações sugeridas e ainda assim aparece erro. O que acho estranho é que esse erro acontece só no eclipse, no Netbens roda perfeitamente. Será que o problema não é com o eclipse?

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Huun. Aqui no meu eclipse funcional certinho, tenta setar as demais variáveis para Locale.setDefault(new Locale("pt", "BR"));

tirando isso não sei o que possa ser.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@edifesf10 Creio q é alguma configuração do compilador, conforme o link q postei acima.

É mencionado esse mesmo erro com respeito ao uso do printf e é dada a solução p o problema

 

Editado por giu_d
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual versão é o teu eclipse?
O meu é o Eclipse Photon 3.8

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Francine Guimarães 

Eclipse IDE for Java Developers

Version: Photon Release (4.8.0)
Build id: 20180619-1200

 

Mas procure dar uma olhada no link q passei acima pois a maneira d resolver esse erro é bem simples

 

Editado por giu_d
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora que li com mais atenção consegui resolver, era conforme estava no link mesmo, muito obrigada!
 

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@edifesf10 Olá. Apenas algo q seria importante frisar, até p ajudar no seu processo de aprendizado...

com respeito a esse comentário:

Em 18/08/2018 às 13:34, edifesf10 disse:

Outra coisa essa linha ...

        System.out.println();

... tira ela, porque ela não imprimi nada rsrsrs;

 

Esse comando, q realmente não está imprimindo nada, é usado, inclusive com bastante frequência, para fazer (forçar) uma quebra de linha

Experimenta rodar o código com essa linha e sem ela e vai ver a diferença

Eu mesmo, para deixar o resultado ao executar um código q crio com uma aparência melhor (melhor formatado), uso muito esse comando

Desculpa ter q falar assim, mas como o foco aqui do fórum é o aprendizado, vi ser necessário esse comentário :thumbsup:

Editado por giu_d
corrigir comentário
  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada pelo comentário, @giu_d!
Mas usar o \n no começo, antes de 'Record ' daria o mesmo resultado e diminuiria duas linhas do código, né?  

Em 18/08/2018 às 07:04, Francine Guimarães disse:

System.out.printf("Record: %d years old, code %d and gender: %c%n", age, code, gender);

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Francine Guimarães Olá. Exatamente! É perfeitamente possível usar um '\n' no início desse texto, como também é possível inserir um ou mais '\n' no meio do texto como também no final. Com isso você vai economizar duas linhas de códigos mesmo. Logo, essa linha poderia ficar assim:

System.out.printf("\nRecord: %d years old, code %d and gender: %c\n\n", age, code, gender);

Mas eu recomendo q você faça testes, insira um ou mais '\n' ( que é um exemplo de caractere de escape) no meio do texto, experimenta colocar uma tabulação no início do texto para ver como fica, seria '\t'

Segue um exemplo apenas para você testar aí:

System.out.printf("\nRecord: %d years old,\n\n\t code %d and gender: %c\n\n", age, code, gender);

Mas é assim q se aprende. É experimentando, tentando, mexendo aqui e ali no código para ver o q acontece, etc...

Sugiro pesquisar a respeito dos caracteres de escape e entender melhor o q cada um faz.

Por isso estou evitando de falar do '%n'. O motivo disso é que ainda não tenho o conhecimento adequado a respeito dessa formatação com o '%n'. Já pesquisei a respeito disso mas não encontrei nenhum exemplo. Funciona, mas eu gostaria de entender melhor o por quê dessa formatação

Em C, que é a linguagem em q estou focado atualmente, formatações como essas com o '\n', '\t', etc.. são muito comuns e muito usadas em grande parte dos códigos q vejo e, claro, nos códigos q crio também hehe

Qualquer dúvida é só perguntar, ok?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os que conheço por enquanto são só o \t, \n e %n, existe mais algum?
Quanto ao '%', o professor que me da aula no curso falou algo sobre ser um quebra linha 'universal' que funciona em qualquer OS ou algo assim, não lembro direito mas foi algo com relação a funcionar em qualquer lugar

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Francine Guimarães Olá. Tem outros, os mais usados são o '\n' e o '\t'. Tem também ' \" ' para aspas duplas e ' \' ' para aspas simples

Veja dois exemplos com formatações té não muito comuns em se tratando de Java:

System.out.printf("\" %-8s \" %20s %10.2f\n",  product1, "which price is $", price1);

System.out.printf("\" %-10s \" %17s %10.2f\n", product2, "which price is $", price2);	

Se bater o olho em um código assim fica bem estranho mesmo. Mas tem vários tipos de formatações q se pode usar, e em C se faz muito o uso de formatações como essas. Em Java já não é algo tão comum

Claro q no exemplo acima té exagerei no uso de formatações, a ideia foi de apenas dar uma ideia da quantidade de possibilidades q se tem

Essas mesmas duas linhas já ficam "mais agradáveis aos olhos" dessa forma:

System.out.printf("%s, %s %.2f\n",  product1, "which price is $", price1);

System.out.printf("%s, %s %.2f\n",  product2, "which price is $", price2);	

Já fazendo uso de um método para deixar a string em maiúscula:

System.out.printf("%20s, %s %.2f\n",  product1.toUpperCase(), "which price is $", price1);

System.out.printf("%20s, %s %7.2f\n",  product2.toUpperCase(), "which price is $", price2);		

E por aí vai.

Mas pode ficar tranquila porque, com o tempo, a medida em q você for estudando, as coisas começam a "clarear" cada vez mais e aí tudo começa a ficar muito mais fácil. Essa é a boa notícia! Não q não vá se deparar com novos desafios, mas com o tempo vai ficando mais fácil superar esses desafios. A questão é continuar assim, procurando entender, conhecer novas coisas, ir se aprofundando mesmo nesse universo da programação. Ter essa "curiosidade" em saber como é ou como não é e tal. É assim q a gente vai aprendendo. Manda bala aí no Java!

Qualquer dúvida fica a vontade p perguntar, ok? :thumbsup:

Atualizando um pouco o comentário...

Recomendo dar uma olhada nesse link:

https://docs.oracle.com/javase/tutorial/java/data/numberformat.html

Agora entendi o por quê desse '%n'

Veja um exemplo de formatações q encontrei no link:

import java.util.Calendar;
import java.util.Locale;

public class Formatacao {

    public static void main(String[] args) {

        long n = 461012;
        System.out.format("%d%n", n); // --> "461012"
        System.out.format("%08d%n", n); // --> "00461012"
        System.out.format("%+8d%n", n); // --> " +461012"
        System.out.format("%,8d%n", n); // --> " 461,012"
        System.out.format("%+,8d%n%n", n); // --> "+461,012"

        double pi = Math.PI;

        System.out.format("%f%n", pi); // --> "3.141593"
        System.out.format("%.3f%n", pi); // --> "3.142"
        System.out.format("%10.3f%n", pi); // --> " 3.142"
        System.out.format("%-10.3f%n", pi); // --> "3.142"
        System.out.format(Locale.FRANCE, "%-10.4f%n%n", pi); // --> "3,1416"

        Calendar c = Calendar.getInstance();

        System.out.format("%tB %te, %tY%n", c, c, c); // --> "May 29, 2006"

        System.out.format("%tl:%tM %tp%n", c, c, c); // --> "2:34 am"

        System.out.format(Locale.getDefault(), "%tD%n", c); // --> "05/29/06"

    }

}

Muitas dessas formatações usadas nesse código acima são novas p mim, principalmente o uso, agora bem comprovado, do '%n'. Obrigado!

Editado por giu_d
corrigir comentário
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@giu_dMuito obrigada!!

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×