Estava fazendo um exercício do site HarckerRanck, quando me deparei com um bug bastante irritante que não importa o que eu modifique no meu código ele não desaparece.
O problema é o seguinte: o usuário digita o valor da refeição, a porcentagem da gorjeta e da taxa extra. Então o codigo calcula o valor total da refeição, que seria o valor da refeição mais o valor da gorjeta mais o valor da taxa extra. O bug é que envés de mostrar na tela o valor total, ele apenas mostra o valor da refeição.
Pensei que o código não estivesse guardando as porcentagens, mas após eu mandar o código mostrar o valor das variáveis, vi que não era isso pois mostrou o valor certo. A variável que está nula é a que guarda o valor da taxa e da gorjeta. Mas, não consigo achar o que está fazendo essas variáveis ficarem com valor nulo.
Poderia me ajudar a ver onde eu posso ter errado?
Problema que estou resolvendo: https://www.hackerrank.com/challenges/30-operators/problem
Aqui o meu código:
import java.util.Scanner;
public class Meal {
double mealCost = 0;
double totalCost = 0;
int tipPercent = 0;
int taxPercent = 0;
double tip = 0;
double tax = 0;
public double getMealCost(){
return this.mealCost;
}
public int getTipPercent() {
return this.tipPercent;
}
public int getTaxPercent() {
return this.taxPercent;
}
public double getTotalCost() {
return this.totalCost;
}
public double getTip(){
return this.tip;
}
public double getTax(){
return this.tax;
}
public void setTip(double newTip) {
this.tip = newTip;
}
public void setTax(double newTaxa) {
this.tax = newTaxa;
}
public void setMealCost(double newMealCost){
this.mealCost = newMealCost;
}
public void setTipPercent(int newTipPercent){
this.tipPercent = newTipPercent;
}
public void setTaxPercent(int newTaxPercent) {
this.taxPercent = newTaxPercent;
}
public void setTotalCost(double newTotalCost) {
this.totalCost = newTotalCost;
}
public Meal(double mC,int tiP,int taP){
setMealCost(mC);
setTipPercent(tiP);
setTaxPercent(taP);
}
public double cTip(double v, int p){
return (v * (p/100));
}
public double cTotal(){
return Math.round(this.getMealCost()+this.getTip()+this.getTax());
}
public static void main(String arg[]) {
Scanner ler = new Scanner(System.in);
Meal Jantar = new Meal(ler.nextDouble(),ler.nextInt(),ler.nextInt());
Jantar.setTax(Jantar.cTip(Jantar.getMealCost(),Jantar.getTaxPercent()));
Jantar.setTip(Jantar.cTip(Jantar.getMealCost(),Jantar.getTipPercent()));
System.out.println("MealCost: "+ Jantar.getMealCost());
System.out.println("PercentTax: "+ Jantar.getTaxPercent());
System.out.println("PercentTip: "+ Jantar.getTipPercent());
System.out.println("Taxa: "+ Jantar.getTax());
System.out.println("Tip: " + Jantar.getTip());
System.out.println("Custo Total:"+ Jantar.cTotal());
}
}