Esses erros so acontecem comigo? [Especificadores de formato]

5 respostas
Hygor_Kovags
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Hygor
 */
import java.util.Scanner;
public class GradeBook {

private int GradeCounter;
private int total;
private String courseName;
private int aConta;
private int bConta;
private int cConta;
private int dConta;
private int fConta;


public GradeBook(String name){
    courseName = name;

}
public void setCourseName(String name){
    courseName = name;

}
public String getCourseName(){
    return courseName;
}
public void displayMessage(){
    System.out.printf("Bem-Vindo ao GradeBook para\n%s\n\n");
}
public void entradanotas(){
    Scanner input = new Scanner (System.in);
    int nota;
 System.out.printf("%s\n%s\n   %s\n   %s\n" , "introduza notas inteiras no intervalo 0 - 100." ,

"digite o indicador de fim de arquivo para terminar entrada." , " usando UNIX,LINUX MAC Pressione Ctrl + D e aperte ENTER" ,
         "No Windows Pressione CTRL + Z e depois ENTER!");
 while (input.hasNext()){
     nota = input.nextInt();
     total += nota;
     ++GradeCounter;
incrementaGradeCounter(nota);

   }
    }

   public void incrementaGradeCounter(int nota){
       switch (nota / 10){
           case 10: // nota estava entre 90.
           case 9: // e 100.
               ++aConta;
               break;
           case 8:
               ++bConta;
           break;

           case 7:
               ++cConta;
               break;
           case 6:
               ++dConta;
           default :
               ++fConta;
               break;

       }
   }
   public void displayrelatnotas(){
       System.out.printf("\nRELATORIO DE NOTAS");

       if (GradeCounter != 0){
         double media = (double) total / GradeCounter;
         System.out.printf("Total das notas inseridas eh:%d\n",GradeCounter,total);
      System.out.printf("Media da classe eh:%.2f\n",media);
      System.out.printf("%s\n%s%d\n%s%d\n%s%d\n%s%d\n%s%d\n",
              "numero de alunos que receberam cada nota",
              "A: ",aConta,
              "B:", bConta,
              "C:", cConta,
              "D:", dConta,
              "F:", fConta);
       }
       else
           System.out.printf("\n Nenhuma nota foi digitada ainda");


   }








}
^ l to fazendo com que essa classe seja executada por essa

l
V

public class GradeBookTest {
public static void main (String[] args){
    GradeBook meuGradeBook = new GradeBook("CS 101 Java");
    meuGradeBook.displayMessage();
    meuGradeBook.entradanotas();
    meuGradeBook.displayrelatnotas();
}


}
So que quando dou um Shift+F6 no NetBeans pra poder executar é retornado o segunte erro:
run:
Bem-Vindo ao GradeBook para
Exception in thread "main" java.util.MissingFormatArgumentException: Format specifier 's'
        at java.util.Formatter.format(Formatter.java:2431)
        at java.io.PrintStream.format(PrintStream.java:920)


        at java.io.PrintStream.printf(PrintStream.java:821)
        at GradeBook.displayMessage(GradeBook.java:35)
        at GradeBookTest.main(GradeBookTest.java:6)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)

po ja tava dificil estudar sozinho com o livro, agora faz a gente errar... escrevi igualzinho o livro... rrsrsrs (Livro DEITEL,Java Como programar 6ª Edição).

pessoal me ajuda ai com os especificadores de formato... Muito Obrigado pela atenção

5 Respostas

T

Dá a impressão que há um erro no livro. É para haver um parâmetro adicional em printf (de modo geral, você sabe quantos parâmetros o printf precisa contando os “%”. Como há um “%”, então você tem de passar um parâmetro.). Acho que é algo assim:

System.out.printf("Bem-Vindo ao GradeBook para\n%s\n\n", courseName);
Hygor_Kovags

Hygor_Kovags

alguém ai sabe como resolver esse problema pra poder executar o programa???

violanjo

Pois é estou com o mesmo problema e ele persiste em ambiente NetBeans, já com Eclipse funcionou normalmente, e eu testei em duas plataformas Linux Ubuntu 9.04 e Windows, obtive o mesmo resultado, então chego a conclusão que o NetBeans deve ter outra definição para pegar o " Indicador de fim de arquivo " que onde mora o problema, o Eclipse Galileo lê tranquilamente tanto em Linux quanto em windows , mas por fim indentifiquei o problema, no entanto não achei uma solução para o mesmo.

CrOnNoS

o thingol já te deu a solução:
java.util.MissingFormatArgumentException: Format specifier ‘s’
no comando

System.out.printf("Bem-Vindo ao GradeBook para\n%s\n\n")

você tá especificando que vai existir uma string entre os 2 primeiros “\n” através do %s, mas não está passando nenhuma String como segundo argumento para o printf
ou você remove esse %s ou você adiciona a String que vai aparecer no lugar dele, nesse caso provavelmente courseName:

System.out.printf("Bem-Vindo ao GradeBook para\n%s\n\n", courseName)
Criado 20 de maio de 2009
Ultima resposta 4 de nov. de 2009
Respostas 5
Participantes 4