Java não subtraí número menor que 1 na repetição

Eu estou tendo dificuldades para desenvolver a seguinte aplicação: Ler o valor de troco que uma pessoa irá digitar,de acordo com o valor mostrar quantas cédulas de 100,50,20,10,5 ou 2 serão necessárias e,se necessárias moedas mostrar quantas de 50,25,10 e 5 centavos.

O problema está na verificação das moedas,quando eu coloco por exemplo 0.70(que iria retornar duas moedas de 10 e uma de 50 centavos,só retorna a de 50 centavos),se puderem me ajudar ficarei grato.

[code]import java.util.*;
import java.util.Locale;
public class ex1trococonsole
{

public static void main(String[]args)
{
	double n;
	int contcincocent=0,contdezcent=0,contvintecincocent=0,contcinquentacent=0,contum=0,contdois=0,contcinco=0,contdez=0,contvinte=0,contcinquenta=0,contcem=0;
	Scanner aux = new Scanner(System.in);
	aux.useLocale(Locale.ENGLISH);  
	System.out.print("Digite o valor:");
	n = aux.nextDouble();
	

	do
	{
		if(n>=100)
		{
			
			if(n<100)
			{
				break;
			}
			else
			{
				n=n-100;
				contcem+=1;
				
			}
		}
		else if(n < 100 && n >=50)
		{
			
			if(n<50)
			{
				break;
			}
			
			else
			{
				n=n-50;
				contcinquenta+=1;
				
			}
		}
		else if(n< 50 && n>=20)
		{
			if(n<20)
			{
				break;
			}
			else
			{
				n=n-20;
				contvinte+=1;
				
			}
				}
		else if(n< 20 && n >=10)
		{	
			if(n<10)
			{
				break;
			}
			else
			{
				n=n-10;
				contdez+=1;
				
			}
			
		}
		else if(n < 10 && n>=5)
		{	
			if(n<5)
			{
		
				break;
			}
			else
			{
				n=n-5;
				contcinco+=1;
				
			}
			
		}	
		
		else if(n< 5 && n >=2)
		{
			if(n<2)
			{
				break;
			} 
			else
			{
				n=n-2;
				contdois+=1;
				
			}
			
		}
		else if(n< 2 && n>=1)
		{
			if(n<1)
			{
				break;
			}
			else
			{
				n=n-1;
				contum+=1;
				
			}
			
		}
		else if(n<1 && n>=0.50)
		{
			if(n<0.50)
			{
				break;
			}
			else
			{	
				n=Math.round(n-0.50);
				contcinquentacent+=1;
				
			}
			
		}
		else if(n<0.5 && n>= 0.25)
		{
			if(n<0.25)
			{
				break;
			}
			else
			{
				n=Math.round(n-0.25);
				contvintecincocent+=1;
				
				
			}
			
		}
		else if(n< 0.25 && n>=0.10)
		{
			if(n<0.1)
			{
				break;
			}
			else
			{
				n=Math.round(n-0.10);
				contdezcent+=1;
				
			}
		}
		
		else if(n< 0.1 && n>=0.05)
		{
			if(n<0.05)
			{
				break;
			}
			else
			{
			
				n=Math.round(n-0.05);
				contcincocent+=1;
				
			}
			
		}
		
		}
	
	while(n>0);
	System.out.println("Notas de cem: "+contcem);
	System.out.println("Notas de cinquenta: "+contcinquenta);
	System.out.println("Notas de vinte: "+contvinte);
	System.out.println("Notas de dez: "+contdez);
	System.out.println("Notas de cinco: "+contcinco);
	System.out.println("Notas de dois: "+contdois);
	System.out.println("Moedas de um real:"+contum);
	System.out.println("Moedas de cinquenta centavos:"+contcinquentacent);
	System.out.println("Moedas de vinte e cinco centavos: "+contvintecincocent);
	System.out.println("Moedas de dez centavos: "+contdezcent);
	System.out.println("Moedas de cinco centavos:"+contcincocent);
	
	}
}

[/code]

Vou te dar uma dica.

Seu erro está aqui:

while(n>0); 

Você está jogando fora os decimais da sua variável double:

n=Math.round(n-0.50);

Outras dicas:

1. Você está fazendo exageros na codificação:

[code]if(n>=100)
{

            if(n<100)  //<< aqui é impossível ser <100
            {  
                break;  
            }  
            else  
            {  
                n=n-100;  
                contcem+=1;  
                  
            }  
        }  
        else if(n < 100 && n >=50)  //<< aqui é impossível ser <100


[/code]
Melhorado:

if(n>=100) { n=n-100; contcem+=1; } else if(n >=50) {

2. O uso de float ou double pode te trazer problemas nos cálculos de precisão (>=).
Sugestões: trabalhe com int e multiplique tudo por 100, ou trabalhe com BigDecimal.