Capitulo 10 deitel polimorfismo

3 respostas
LPJava

ae, galara to lendo deitel sexta edição e no cap 10 fala sobre polifornismo, tem um programa onde ele ensina a desenvolver uma folha de pagamento e talz.. fiz o programa mas ta dando um pequeno erro:


Exception in thread "main" java.util.UnknownFormatConversionException: Conversio
n = ','
at java.util.Formatter.checkText(Formatter.java:2500)
at java.util.Formatter.parse(Formatter.java:2464)
at java.util.Formatter.format(Formatter.java:2411)
at java.util.Formatter.format(Formatter.java:2364)
at java.lang.String.format(String.java:2520)
at ComissionEmploye.toString(ComissionEmploye.java:45)
at java.util.Formatter$FormatSpecifier.printString(Formatter.java:2790)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2673)
at java.util.Formatter.format(Formatter.java:2430)
at java.io.PrintStream.format(PrintStream.java:899)
at java.io.PrintStream.printf(PrintStream.java:800)
at Payroll.main(Payroll.java:24)

gostaria uma ajuda ai!! que tipo de erro eh esse talz.. ja olhei todo o codigo e nao achei..coloquei em anexo todas as classes que utilizei!!

aqui eh a classe de test:
//programa para testar as classes

public class Payroll
{
	public static void main(String args[])
	{
		//aqui configura o salario semanal
		SalariedEmploye salariedemploye = new SalariedEmploye("Camilo","neto","1254-542",800.00);
		
		//aqui configura o salario hora
		HoraEmploye horemploye = new HoraEmploye("Carlos", "Costa", "25478-85", 16.75, 40);
		
		//salario por comissao
		
		ComissionEmploye comissionemploye= new ComissionEmploye("Sueli", "Nogueira", "25478-244", 10000, .06);
		//salario base
		
		BasePlus baseplus = new BasePlus("Marcos", "Augusto", "25478-3654",5000,.04,300);
		
		System.out.println("Processando empregado individual:\n");
		
		System.out.printf("%s\n%s: R$%,.2f\n\n", salariedemploye, "lucro", salariedemploye.lucro());
		System.out.printf("%s\n%s: R$%,.2f\n\n", horemploye, "lucro", horemploye.lucro());
		System.out.printf("%s\n%s: R$%,.2f\n\n", comissionemploye, "lucro", comissionemploye.lucro());
		System.out.printf("%s\n%s: R$%,.2f\n\n", baseplus, "lucro", baseplus.lucro());
		
		//cria um array de quatro elemento
		
		Employe empregado[] = new Employe[4];
		
		empregado[0] = salariedemploye;
		empregado[1] =  horemploye;
		empregado[2] = comissionemploye;
		empregado[3] = baseplus;
		
		System.out.println("processo de empregado com polifornismo");
		
		for( Employe currenteEmploye : empregado)
		{
			System.out.println(currenteEmploye);
			
			if(currenteEmploye instanceof BasePlus)
			{
				BasePlus employye = (BasePlus)currenteEmploye;
				double oldbase = employye.getBaseSalary();
				employye.setBaseSalary(1.10 * oldbase);
				System.out.printf("nova base salario 10%% eh R$%,.2f\n",
				employye.getBaseSalary());
			}
			
			System.out.printf("lucro R$%,.2f\n\n", currenteEmploye.lucro());
		}
		
		//obtem o nome do tipo de cada ojeto no array
		for(int j = 0; j < empregado.length; j++)
		{
			System.out.printf("empregado %d e a %s\n", j, empregado[j].getClass().getName());
		}
	}
}

3 Respostas

Daniel_Quirino_Olive

O stacktrace já lhe dá a resposta de onde você deveria procurar:

at Payroll.main(Payroll.java:24)

Troque as máscaras de formatação nos printf’s :wink:

Exemplo:

double d = 10000.0/3.0;
System.out.printf("%.,2f", d); // 3.333,33
cassio

Daniel Quirino Oliveira:
O stacktrace já lhe dá a resposta de onde você deveria procurar:

at Payroll.main(Payroll.java:24)

Troque as máscaras de formatação nos printf’s :wink:

Exemplo:

double d = 10000.0/3.0;
System.out.printf("%.,2f", d); // 3.333,33

tem uma virgula sobrando depois do ponto da mascara .2%f ali no printf …
Não entendi seu uso, poderia explicar?!

Abraço!

LPJava

bom no deitel tava assim acho que para fica 1,00 , agora q to reparando n sei pra q!!removi mais o erro persiste :frowning:

Criado 20 de agosto de 2006
Ultima resposta 20 de ago. de 2006
Respostas 3
Participantes 3