Switch Erro

8 respostas
R

primeiro Boa Noite,
acho que meu código ta correto se tratando do método “switch”
to errando me parece em alguma formatação como se mostra no console
se puderem me ajudar fico muito grato

…Aqui a subclasse…

import java.util.Scanner;

public class GradeBook
{

private String courseName;

private int total;

private int gradeCounter;

private int aCount;

private int bCount;

private int cCount;

private int dCount;

private int fCount;
public GradeBook( String name )
  {  

     courseName = name;  


  }   




public void setCourseName( String name )
{

   courseName = name;  

}   





public String getCourseName()
{

   return courseName;

}

public void displayMessage()
{

System.out.printf( "Welcome to the grade book for\n%s!\n\n", 
		  getCourseName() );

}

public void inputGrades()
{

Scanner input = new Scanner( System.in );


  int grade;  


  System.out.printf( "%s\n%s\n   %s\n   %s\n",
      "Enter the integer grade in the range 0-100.",
      "On UNIX/Linux/Mac OS X type <ctrl> d then press Enter",
      "On Windows type <ctrl> z then press Enter");

while (input.hasNext() )
{

grade = input.nextInt();   
  total +=  grade;           
  ++gradeCounter;            


 
  incrementLetterGradeCounter( grade );

}

}

public void incrementLetterGradeCounter( int grade )
{

switch ( grade / 10 )
  {

     case 9:               
     case 10:              
       ++aCount;           
       break;             

     case 8:               
       ++bCount;           
       break;             

     case 7:               
       ++cCount;           
       break;              

     case 6:                
       ++dCount;           
       break;              

 
     default:                 
        ++fCount;            
        break;                


  }

}

public void displayGradeReport()
{

System.out.println( "\nGrade Report:" );

  

  if ( gradeCounter != 0 )
  {

     
     double average = (double) total / gradeCounter;


    
    System.out.printf( "Total of the %d grades entered is %d\n",
    		gradeCounter, total );
    System.out.printf( "Class average is %.2f\n", average );
    System.out.printf( "%s\n%s%d\n%s%d\n%s%d\n%s%d\n%s%d\n", 
       "Number of students who received each grade:", 
       "A: ", aCount,      
       "B: ", bCount,    
       "C: ", cCount,      
       "D: ", dCount,     
       "F: ", fCount );     

  }      
  else      
     System.out.println( "No grades were entered" );

}

}

…Aqui a classe Main…

public class GradeBookTest
{

public static void main( String args [] )
{

GradeBook myGradeBook = new GradeBook(
		  "CS101 Instroduction to Java Programing" );

  myGradeBook.displayMessage();          
  myGradeBook.inputGrades();            
  myGradeBook.displayGradeReport();

} //fim de main

} //fim da classe GradeBookTest

--------------------------Console--------------------------------------------------------------
C:\Java\Compile>java GradeBookTest
Welcome to the grade book for
CS101 Instroduction to Java Programing!

Enter the integer grade in the range 0-100.

On UNIX/Linux/Mac OS X type  d then press Enter

On Windows type  z then press Enter

Exception in thread main java.util.MissingFormatArgumen

pecifier s

at java.util.Formatter.format(Formatter.java:2429)

at java.io.PrintStream.format(PrintStream.java:899)

at java.io.PrintStream.printf(PrintStream.java:800)

at GradeBook.inputGrades(GradeBook.java:86)

at GradeBookTest.main(GradeBookTest.java:39)

8 Respostas

O

cara nao sei se to falando besteira e tambem nao entendi o problema!!!
O switch nao trabalha somente com int?? na hora que vc coloca la grade/10 ele pode(vai ?) gerar um double e outra coisa posta o codigo dentro da paradinha de codigo que fica bem melhor pra ser visualizado!!

Falou

Paradinha de codigo
R

ok vlw de qlqr forma
Switch trabalha com(byte, short, int ou char)

Rulio

tem certeza que essa divisão não está retornando um double ?

ricoldi

Tb estou achando, manda dar uma saida nesta conta sua ai e confere


http://java.sun.com/docs/books/tutorial/java/nutsandbolts/switch.html

pimenta

Pra não ter erro faz assim antes:

int resultado = grade/10;
...
switch(resultado){
...
}

Assim você garante que o que vai pro switch é um int.

OBS: pra fazer isso aí em cima a variável grade tem que ser byte, short ou int.

R

vlW pessoal tava faltando uma frase só isso

"
System.out.printf( “%s\n%s\n %s\n %s\n”,
“Enter the integer grade in the range 0-100.”,
“Type the end-of-file indicator to terminate input:”, //essa frase faltava por isso tava dando erro
“On UNIX/Linux/Mac OS X type d then press Enter”,
“On Windows type z then press Enter” )
;
"

R

dsculp pela formatação
da proxima vez coloco tudo em código direitinho

LPJava

ro0t:
dsculp pela formatação
da proxima vez coloco tudo em código direitinho

edita o topico e formata… nao fiquei com preguiça de ler sua duvida… dessa forma…

http://www.guj.com.br/posts/list/50115.java

Criado 1 de julho de 2008
Ultima resposta 9 de jul. de 2008
Respostas 8
Participantes 6