Salve a tutti sto cercando d'implementare un metodo java che aggiunga una commissione ad un conto bancario dopo aver terminato le 10 commissioni gratis disponibili e che sottragga il costo delle commissioni solo il 30 di ogni mese. Purtroppo il codice non funziona se applico questo metodo. Qualcuno può fare chiarezza sul mio errore ?
codice:
import java.util.*;
public class BankAccount 
{
	//COSTRUTTORE 
	/*costruisce un saldo uguale a zero */
	public BankAccount()
	{
		
		balance = 0;
	}
	
	/*costruisce un saldo predefini
	 * @param  balance saldo
	 * @assert saldo !=0
	 */
    public BankAccount(double newbalance)
    {
    	balance = newbalance;
    }
	///METODI
	/* metodo per il deposito del denaro
	 * @param amount il saldo da depositare
	 * @assert ammontare maggiore di zero
	 */
    
    
	
	public void deposit(double amount)
	{
		assert amount > 0 : "IL DEPOSITO DEV'ESSERE UN NUMERO MAGGIORE DI ZERO " + amount;
		double newbalance = this.balance + amount;
		this.balance = newbalance;
		
	}
	
	/* metodo per il prelievo 
	 * @param amount saldo da prelevare
	 * @assert il bilancio dev'essere > 0
	 */
	public void withdraw(double amount)
	{
		assert this.balance > 0 : " PER POTER PRELEVARE IL BILANCIO DEV'ESSERE UN NUMERO MAGGIORE DI ZERO " + this.balance;
		double newWithdraw = this.balance - amount;
		this.balance = newWithdraw;
	}
	
	/*metodo per aggiungere gli interessi 
	 * @param amount l'ammontare degli interessi
	 */
	
	public void addinterest(int interest)
	{
		double newinterest = (this.balance * interest) / 100;
		this.balance = this.balance + newinterest;
	}
	
	/* il bilancio del conto
	 * @return balance
	 */
	
	
	public double getBalance()
	{
		return this.balance;
		
	}
public void numeroCommissione(double numcom)
	{
		//ORA CALENDAR RAPPRESENTA IL 30 ESIMO GIORNO
		GregorianCalendar calendario = new GregorianCalendar();
		calendario.add(Calendar.DAY_OF_MONTH, 2);
		
		//costo di ogni commissioni
		double costocommissione = 100;
		//numero commissioni gratis
		double gratis = 10;
		
		double  newnumcom = numcom;
		
		//se il numero delle commissioni è maggiore di gratis cioè 
                  terminano le transazioni gratis disponibili entra nel secono ramo if
		if (newnumcom > gratis)
		{
			//se è il 30esimo giorno del mese applica le commissioni
			if(Calendar.DAY_OF_MONTH == 30)
		 	{
				double tot = (newnumcom - gratis);
				balance = balance - (costocommissione*tot); 
				
		 	}
			//altrimenti aggiungi il numero di commissioni.
			else 
			newnumcom++;
		}
		//altrimenti sottrai il numero delle transazioni gratis fino a terminare le transazioni gratis
		else
			gratis--;
		
			
	}