Variável Vazia

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

A divisão entre dois inteiros, em Java, retorna sempre um resultado inteiro, ignorando o resto. Como o valor de p é sempre menor do que 100, o resultado da divisão será sempre 0. Vais ter o resultado que pretendes se alterares o teu método para

 public double cTip(double v, int p){ 
    return (v * (p/100.0));   // Nota o ponto zero - assim passa a ser double
}

Deu certo! Muito obrigada!