Problemas para apanhar string em Java no laço (Duvida iniciante)

Boa tarde! Sou um programador iniciante e estou com uma duvida.
O código abaixo não apanha mais que uma vez uma string. Ele deve guardar os valores de salario do sexo masculino e feminino e retornar a média para cada sexo, no entanto ele pede pro usuário inserir apenas uma vez o sexo, e quando entra novamente no loop ele não deixa eu inserir uma nova string e sai do loop pq preencheu a variavel “sexo” com nada aparentemente.
Segue abaixo o código:

public static void main(String[] args) {
//variáveis
String sexo;
float salf, salm;
int f1, m1;
f1 = 0;
m1 = 0;
salf = 0;
salm = 0;
Scanner ler = new Scanner(System.in);

    do {
        System.out.println("Insira o sexo");
        sexo = ler.nextLine();
                   
        if (sexo.equals("m")) {
            System.out.println("Insira a renda");
            salm = salm + ler.nextFloat();
            m1++;
        }else if(sexo.equals("f")){
            System.out.println("Insira a renda");
            salf = salf + ler.nextFloat();
            f1++;
        }
    } while (sexo.equals("m") || sexo.equals("f"));
    
    System.out.println("media mulher: " + (salf/f1));
    System.out.println("media homem: " + (salm/m1));
}

}

Obrigado desde já!

Eu peguei sua ideia inicial, e dei uma mudada. E funcionou sem problemas:

	char sexo;
	float mediaM = 0, mediaF = 0, renda = 0;
	int m1 = 0, f1 = 0;

	Scanner sc = new Scanner(System.in);

	System.out.print("Digite o sexo: ");
	sexo = sc.next().charAt(0);

	while (sexo == 'm' || sexo == 'f') {

		System.out.print("Insira o salário: ");
		renda = sc.nextFloat();

		if (sexo == 'm') {
			mediaM = mediaM + renda;
			m1++;
		}
		if (sexo == 'f') {
			mediaF = mediaF + renda;
			f1++;
		}

		System.out.println("Existem dados de " + m1 + " homens, com média de " + (mediaM / m1));
		System.out.println("Existem dados de " + f1 + " mulheres, com média de " + (mediaF / f1));

		System.out.print("\nDigite o sexo: ");
		sexo = sc.next().charAt(0);

	}

E teve esse saída:

Digite o sexo: m
Insira o salário: 500
Existem dados de 1 homens, com média de 500.0
Existem dados de 0 mulheres, com média de NaN

Digite o sexo: f
Insira o salário: 800
Existem dados de 1 homens, com média de 500.0
Existem dados de 1 mulheres, com média de 800.0

Digite o sexo: m
Insira o salário: 300
Existem dados de 2 homens, com média de 400.0
Existem dados de 1 mulheres, com média de 800.0

Digite o sexo: f
Insira o salário: 725
Existem dados de 2 homens, com média de 400.0
Existem dados de 2 mulheres, com média de 762.5

Edit, usando String em sexo.

	String sexo;
	float mediaM = 0, mediaF = 0, renda = 0;
	int m1 = 0, f1 = 0;

	Scanner sc = new Scanner(System.in);

	System.out.print("Digite o sexo: ");
	sexo = sc.next();

	while (sexo.equals("m") || sexo.equals("f")) {

		System.out.print("Insira o salário: ");
		renda = sc.nextFloat();

		if (sexo.equals("m")) {
			mediaM = mediaM + renda;
			m1++;
		}
		if (sexo.equals("f")) {
			mediaF = mediaF + renda;
			f1++;
		}

		System.out.println("Existem dados de " + m1 + " homens, com média de " + (mediaM / m1));
		System.out.println("Existem dados de " + f1 + " mulheres, com média de " + (mediaF / f1));

		System.out.print("\nDigite o sexo: ");
		sexo = sc.next();

	}

Obrigado!