Porcentagem em java ?{resolvido}

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.00”
at 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

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 "));

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

1 curtida

Postado um modelo para sua consulta.

Follow the model ↓↓↓

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

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

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

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

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

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);
}   
}
}

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.

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.

kkkk consegui ver o erro desculpa

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

[code]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);
}

}[/code]