Problema em utilizar o System.out.printf

4 respostas
userguj

Intaum, o problema está primeiramente na linha 55 conforme diz a msg de erro...!

class Funcionario {
 // alguns codes...

 double calculaSalLiquido()
 	 {
		 if (salario <= 1024.97)
		 {
			 salarioLiquido = salario - (salario * 0.08);
		 } else if (salario >= 1024.98 && salario <= 1708.27) {
			 salarioLiquido = salario - (salario * 0.09);
		 } else {
			 salarioLiquido = salario - (salario * 0.11);
		 }
		 return salarioLiquido;
	 }

 // + codes...

 void mostraAtrib()
	{
		// alguns System.out.println's que estão funcionando
		// i essi metodo abaixo que não funciona, o erro gerado está no fim da msg...
         System.out.printf ("%s %2.f", "Salario liquido: R$ ", calculaSalLiquido()); // esta é a linha 55 conforme a msg de erro!
		
	}
}

intaum ai o erro gerado é esse abaixo

Exception in thread "main" java.util.UnknownFormatConverseException: Conversion =
' 2 '
at java.util.Formatter.checkText(Unknown Source)
at java.util.Formatter.parse(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.io.PrintStream.format(Unknown Source)
at java.io.PrintStream.printf(Unknown Source)
at Funcionario.mostraAtrib(Funcionario.java:55)
at Empresa.mostraEmpregados(Funcionario.java:89)
at TestEmpresa.main(TestEmpresa.java:23)

void mostraEmpregados()
	{
		for (int i = 0 ; i < this.empregados.length ; i++)
		{
			this.empregados[i].mostraAtrib(); // linha 89 conforme a msg de erro!
		}
	}

4 Respostas

MaiqueL
userguj:
Intaum, o problema está primeiramente na linha 55 conforme diz a msg de erro...!
class Funcionario {
 // alguns codes...

 double calculaSalLiquido()
 	 {
		 if (salario <= 1024.97)
		 {
			 salarioLiquido = salario - (salario * 0.08);
		 } else if (salario >= 1024.98 && salario <= 1708.27) {
			 salarioLiquido = salario - (salario * 0.09);
		 } else {
			 salarioLiquido = salario - (salario * 0.11);
		 }
		 return salarioLiquido;
	 }

 // + codes...

 void mostraAtrib()
	{
		// alguns System.out.println's que estão funcionando
		// i essi metodo abaixo que não funciona, o erro gerado está no fim da msg...
         System.out.printf ("%s %2.f", "Salario liquido: R$ ", calculaSalLiquido()); // esta é a linha 55 conforme a msg de erro!
		
	}
}

intaum ai o erro gerado é esse abaixo

Exception in thread "main" java.util.UnknownFormatConverseException: Conversion =
' 2 '
at java.util.Formatter.checkText(Unknown Source)
at java.util.Formatter.parse(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.io.PrintStream.format(Unknown Source)
at java.io.PrintStream.printf(Unknown Source)
at Funcionario.mostraAtrib(Funcionario.java:55)
at Empresa.mostraEmpregados(Funcionario.java:89)
at TestEmpresa.main(TestEmpresa.java:23)

....

* basta corrigir a string de formatação do printf

System.out.printf ("%s %.2f", "Salario liquido: R$ ", calculaSalLiquido());

"%.2f" - numero de digitos a serem exibido depois do ponto decimal.

E

Cara, pra que é que você pôs o %s primeiro? Ele não serve para nada aí no seu caso, só para atrapalhar. Corte isso e vai ver que vai funcionar.

MaiqueL

Como ?

System.out.printf ("%s %.2f", "Salario liquido: R$ ", calculaSalLiquido());

Se vc tirar o “%s” isso não vai funcionar.

Agora se você modificar para isso :

System.out.printf ("  Salario liquido: R$ %.2f ", calculaSalLiquido());

aí blza …

userguj

Vix… :shock:

foi muita falta d atenção minha… :!:

rs

mais vlw ai aos colaborando’S :!:

Criado 16 de março de 2010
Ultima resposta 16 de mar. de 2010
Respostas 4
Participantes 3