Um programa deverá calcular o código o empregado

Eai pessoal, tudo bom?

Eu não sou muito bom em java, mas tenho pesquisado algumas coisas pra ir aprendendo, só que com esse programa aqui eu acabei bugando… Eu não consigo fazer ele pegar a primeira letra do ultimo nome do funcionario… Pensei em usar com split, que achei aqui mesmo no GUJ, mas não deu muito certo…

Ainda falta terminar umas coisinhas mas eu acho que já tá meio caminho andado, alguém poderia me dar uma luz?

Valeu gente!
Fazer um programa para receber via teclado o nome completo do empregado e a data de nascimento
(DD/MM/YYYY) como String;
O programa deverá calcular o código o empregado.
As regras da geração do código são:
 - os 2 primeiros caracteres devem ser iguais a primeiras letra do primeiro nome e primeira letra do último
nome do empregado em maiúsculo.
 - os 2 últimos caracteres deverão ser calculados.
1º. Dígito:
1 - somar o dia, mês e ano;
2 - dividir o resultado por 10
3 - o 1º. Dígito será a parte decimal do resultado da divisão.
2º. Dígito:
1 - Multiplicar entre si o valor de cada dígito do código
2 - o 2º. Digito será o Antepenúltimo algarismo a direita do resultado da multiplicação do dia,
mês e ano

import java.util.*;
public class lista2 {

public static void main(String[] args) {
    
    //variaveis
    Scanner leia = new Scanner(System.in);
    String nomeCompleto,subNomeCompleto;
    String dataDeNascimento, subDataDia, subDataMes, subDataAno;
    //String codigoNome[] = nomeCompleto.split(" ");
    int dataConvertidaDia, dataConvertidaMes, dataConvertidaAno;
    int somaData, multiplicacaoData;
    
    //entrada de dados
    //---- coleta do nome
    System.out.println("Digite o nome do empregado completo: ");
    nomeCompleto = leia.nextLine();
    //---- coleta da data
    System.out.println("Digite a data de nascimento do empregado no modelo -> DD/MM/YYYY: ");
    dataDeNascimento = leia.nextLine();
    //repetição
    //coleta
    //letras
    subNomeCompleto = nomeCompleto.substring(0,1);
    //subNomeCompleto.toUpperCase();
    //data em numeros (tirando '/')
    subDataDia = dataDeNascimento.substring(0, 2); 
    subDataMes = dataDeNascimento.substring(3, 5);
    subDataAno = dataDeNascimento.substring(6);
    
    //convertendo a data para int (numero)
    dataConvertidaDia = Integer.parseInt(subDataDia);
    dataConvertidaMes = Integer.parseInt(subDataMes);
    dataConvertidaAno = Integer.parseInt(subDataAno);
    
    //calculos dos 2 ultimos caracteres
    somaData = (dataConvertidaDia + dataConvertidaMes + dataConvertidaAno) / 10;
    multiplicacaoData = (dataConvertidaDia * dataConvertidaMes * dataConvertidaAno);
    
    //pegando parte decimal e o antepenúltimo algarismo à direita
    
    
    //Saída de dados (Só para testes)
    System.out.println("-------------------------------");
    System.out.println(nomeCompleto);
    System.out.println("-------------------------------");
    System.out.println(dataDeNascimento);
    System.out.println("-------------------------------");
    System.out.println(subNomeCompleto + "-" + subNomeCompleto.toUpperCase());//com maisculo e sem
    System.out.println("-------------------------------");
    System.out.println(subDataDia + "-" + subDataMes + "-" + subDataAno);
    System.out.println("-------------------------------");
    System.out.println(dataConvertidaDia + "-" + dataConvertidaMes + "-" + dataConvertidaAno);
    System.out.println("-------------------------------");
    System.out.println(somaData + "-" + multiplicacaoData);
    
    
}

}

// Obtem o indice do ultimo ' ' do nome
int indiceDoUltimoNome = nomeCompleto.lastIndex(' ');

// Corrige o indiceDoUltimoNome para apontar para a primeira
// letra do ultimo nome
indiceDoUltimoNome += 1;

// Imprime ultimo nome
System.out.println("Ultimo nome: " + nomeCompleto.substring(indiceDoUltimoNome));