Porcentagem em java ?{resolvido}

8 respostas
M

gostaria de fazer algo com desconto no caso, eu teria 10% para determinado valor 15% e para outro valor 5%
no caso eu precisaria de um if e else, mais não sei como fazer com que o net bens reconheça a porcentagem.
essa foi minha tentativa mais não saiu muito legal.
se puder ajudar fico grato.

package javaapplication9;
import javax.swing.JOptionPane;
public class exercicio {
    public static void main (String[]args){
    double valorc,valord,valor1,valor2,valor3;
    
   valorc = Integer.parseInt(JOptionPane.showInputDialog("digite o valor da compra " ));
        
    if (valorc > 500) {
    valor1 =  0.15;
    valord = valor1*valorc;
    JOptionPane.showMessageDialog(null,"o valor da sua compra é "+valorc+"com desconto de 15% fica"+valord);
}   
else if(valorc < 500){
valor2 = 0.10;
valord = valorc * valor2;
    JOptionPane.showMessageDialog(null,"o valor da sua compra é "+valorc+"com desconto de 15% fica"+valord);
}
else (valorc < 200 ) {
valor3 = 0.05;
valord = valorc * valor3 ;
    JOptionPane.showMessageDialog(null,"o valor da sua compra é "+valorc+"com desconto de 15% fica"+valord);


}
    
}
}
o erro é

Exception in thread main java.lang.NumberFormatException: For input string: 400.00at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:492)

at java.lang.Integer.parseInt(Integer.java:527)

at javaapplication9.exercicio.main(exercicio.java:8)

Java Result: 1

8 Respostas

wbdsjunior

você está tentando converter um valor com ponto flutuante (400.00) em um inteiro.

tente:

valorc = Double.parseDouble(JOptionPane.showInputDialog("digite o valor da compra "));
prog.tiago

Bom dia,

valorc = Integer.parseInt(JOptionPane.showInputDialog("digite o valor da compra " ));

Aqui você está tentando converter um Texto para inteiro, se você entrar por exemplo com 50,20 haverá um erro de conversão.

Ao invés de Integer.parseInt, utilize Double.parseDouble

Abraço

CyberX

Postado um modelo para sua consulta.

Follow the model ↓↓↓

public static void main(String[] args) {
		double vlrCompra, vlrDesconto, porcentagem;

		vlrCompra = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da compra: "));

		if (vlrCompra &gt;= 500) {
			porcentagem = 15;
			vlrDesconto = (porcentagem * vlrCompra)/100;
			vlrDesconto = vlrCompra - vlrDesconto;
			JOptionPane.showMessageDialog(null, "O valor da sua compra é "	+ vlrCompra + " com desconto de 15% fica " + vlrDesconto);

		} else if (vlrCompra &lt;= 200) {
			porcentagem = 5;
			vlrDesconto = (porcentagem * vlrCompra)/100;
			vlrDesconto = vlrCompra - vlrDesconto;
			JOptionPane.showMessageDialog(null, "O valor da sua compra é "	+ vlrCompra + " com desconto de 5% fica " + vlrDesconto);

		} else if (vlrCompra &lt; 500) {
			porcentagem = 10;
			vlrDesconto = (porcentagem * vlrCompra)/100;
			vlrDesconto = vlrCompra - vlrDesconto;
			JOptionPane.showMessageDialog(null, "O valor da sua compra é "	+ vlrCompra + " com desconto de 10% fica " + vlrDesconto);
		}
	}
M

bem minha situação meio que mudou um pouco
esse código esta rondando bem mais está errado no resultado, não sei porque mais o loop esta parando sempre no 15% e também tem algum erro na matemática
nessa conta que fiz de porcentagem ! se puderem me ajudar ficaria grato.

package javaapplication9;
import javax.swing.JOptionPane;
public class exercicio {
    public static void main (String[]args){
    double valorc,valord,valor1,valor2,valor3;
    
   valorc = Double.parseDouble(JOptionPane.showInputDialog("digite o valor da compra " ));
        
    if (valorc >= 500) {
    valor1 =  15;
    valord = (valor1*valorc)/100;
    JOptionPane.showMessageDialog(null,"o valor da sua compra é "+valorc+"com desconto de 15% fica"+valord);
}   
else if(valorc <= 200){
valor2 = 10;
valord = (valor2 * valorc ) / 100;
    JOptionPane.showMessageDialog(null,"o valor da sua compra é "+valorc+"com desconto de 15% fica"+valord);
}
else if (valorc < 500 ) {
valor3 = 5;
valord = (valor3 * valorc) / 100 ;
    JOptionPane.showMessageDialog(null,"o valor da sua compra é "+valorc+"com desconto de 15% fica"+valord);
}   
}
}
M

acredito que meu erro esta concentrado na formula para calcular a porcentagem mais não consigo ver claramente qual é a formula correta para calcular corretamente a porcentagem.

M
bem consegui consertar a conta eu estava fazendo algo tipo

valor2 = 5

valor1 = (valordesconto*valor2) / 100;

mais para descontar eu tinha que colocar

valor1 = (valordesconto - valor1);

acho que é isso se tiver errado por favor me concerte.
M

kkkk consegui ver o erro desculpa

eu copiei mal o JOptioPane e copiei 15% em todo eles
o calculo tava certo.

novato25
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

import javax.swing.JOptionPane;

public class Exemplo {
	
	public static final DecimalFormatSymbols REAL = new DecimalFormatSymbols(new Locale("pt","BR")); 

	public static void main (String[]args){  
		double valor;  

		valor = Double.parseDouble(JOptionPane.showInputDialog("digite o valor da compra " ));  
		
		JOptionPane.showMessageDialog(null,"o valor da sua compra é " + mascaraDinheiro(valor) + ". Com desconto de " + obterProcentagem(valor) + "% fica "+ mascaraDinheiro(obterValorComDesconto(valor)));  
	} 
	
	public static double obterValorComDesconto(double valor) {
		return valor - (valor * obterProcentagem(valor)) / 100;
	}
	
	public static int obterProcentagem(double valor) {
		if(valor >= 500)
			return 15;
		else if(valor <= 200)
			return 10;
		else
			return 5;			
	}
	
	public static String mascaraDinheiro(double teste) {
		return new DecimalFormat("¤ ###,###,##0.00", REAL).format(teste);
	}
}
Criado 11 de abril de 2012
Ultima resposta 12 de abr. de 2012
Respostas 8
Participantes 5