O retorno das variáveis é zero

No algoritmo abaixo, por que o resultado das variáveis é zero quando mando mostrar na tela? Tem alguma coisa com a conversão do tipo float e int? Se eu declaro todas as variáveis como float, aí funciona. Abraços e obrigado.

//Faça um programa para solicitar o código, a quantidade de aluno do sexo masculino,
//a quantidade de alunos do sexo feminino e a quantidade de alunos aprovados de uma
//determinada turma. Calcular e informar:
// - a porcentagem de alunos do sexo masculino;
// - a porcentagem de alunos do sexo feminino;
// - a porcentagem de alunos reprovados;
// - o total de alunos da turma;

import javax.swing.JOptionPane;

class AlgoritmoN1J006{

public static void main (String args[]){

	String codigo;
	int quantAluMas;
	int quantAluFem;
	int quantAluApr;
	
	float porcAluMas;
	float porcAluFem;
	float porcAluRep;
	int totAlu;
	
	codigo = JOptionPane.showInputDialog("Código da turma: ");
	quantAluMas = Integer.parseInt(JOptionPane.showInputDialog("Quantidade de alunos do sexo masculino: "));
	quantAluFem = Integer.parseInt(JOptionPane.showInputDialog("Quantidade de alunos do sexo feminino: "));
	quantAluApr = Integer.parseInt(JOptionPane.showInputDialog("Quantidade de alunos aprovados: "));
	
	totAlu = quantAluMas + quantAluFem;
	porcAluMas = (quantAluMas / totAlu) * 100;
	porcAluFem = (quantAluFem / totAlu) * 100;
	porcAluRep = ((totAlu - quantAluApr) / totAlu) * 100;
	
	JOptionPane.showMessageDialog(null,"\nA porcentagem de alunos do sexo masculino é: "+porcAluMas+
	                                   "\nA porcentagem de alunos do sexo feminino é: "+porcAluFem+
									   "\nA porcentagem de alunos reprovados é: "+porcAluRep+		
									   "\nO total de alunos é: "+totAlu);										
}

}

Carlos

Leia neste tópico, para iniciantes no fórum como postar códigos usando tag code.

Mude estas linhas que resolve.

		porcAluMas = ((float)quantAluMas / totAlu) * 100;
		porcAluFem = ((float)quantAluFem / totAlu) * 100;
		porcAluRep = ((float)(totAlu - quantAluApr) / totAlu) * 100;

Tentando explicar o problema.
porcAluMas = (quantAluMas / totAlu) * 100;
porcAluMas = (25 / 50) * 100; // operações entre int e int o resultado é sempre int, então aqui 25/50 é 0(zero) e não 0,5 pois tem de ser em inteiros.

Java faz as contas e vai armazenando sempre no maior tipo que apareceu durante as operações.

Tenta colocar o código dentro das tags para ficar melhor para nós lermos
seu exercício é uma boa oportunidade para você dar uma estudada em pequenos vetores.

Obrigado asousaj. Rodou perfeito. Ainda estou tentando entender a conversão de tipos. Estarei em breve estudando a classe Scanner, classes wrapers, etc. Quando coisa, posto a dúvida aqui.

Grato. Boa noite.

Carlos