Não testei o código, mas olhando as condições parece-me haver apenas duas respostas: Ou a pessoa não terá o desconto ou o desconto será de 10. Acredito que seja dessa forma porque o algoritmo ao será analisado linha a linha, ao testar uma quantidade de milhas maior que 5000 sempre irá parar na linha em que testa a quantidade de milhas maior que 5000, ou seja, se eu tiver 80000(oitenta mil) milhas e rodar o algoritmo, terei como resultado porcentagemDesconto = porcentagemDesconto + 10; porque 80000 é maior que 5000.
Então creio que nunca chegará a ler a condição if(quantidadeMilhas >= 30000){ porcentagemDesconto = porcentagemDesconto + 20;
caso as milhas seja inferior a 5000 cairá na condição: else { porcentagemDesconto = 0;
é isso mesmo?