Como fazer para não imprimir os conectivos junto às iniciais de um nome

Prezados, mais um novato estudante na área…rs
Não consigo retirar a inicial do conectivo da exibição do resultado.

public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        System.out.print("Informe o nome completo: ");

        String nome = entrada.nextLine();//grava na variável nome o valor digitado
        String nomes = nome.trim().toUpperCase();//elimina os espaços iniciais e finais da string e grava na variável nomes
        nomes.split(" ");//particiona o valor gravado na variável nome através do espaço em branco
        nomes.trim();//elimina os espaços em branco do início e do fim da string
        String[] partesNome = nomes.split(" ");//grava na variavel partes do nome o nome particionado pelo métido split
        String iniciais = " ";//inicia a string iniciais
        char letra = ' ';//inicia a variável letra do tipo caractere
        **String [] reservadas = {"DO", "DOS", "DA", "DAS", "DE", "A"};//declaração dos conectivos que devem ser excluídos**
        for (String partesNome1 : partesNome) {
            if (partesNome == reservadas) 
                continue;
            letra = partesNome1.charAt(0);
            iniciais += letra;
        }
        System.out.printf("As iniciais do nome são: " +iniciais+"\n\n");
    }
}

Anderson eu tenho um sério problema de entender oque o pessoal quer no final kkkkkk.

Mas vou comentar e dizer oque eu vi errado, desculpe se não ajudar muito.
contains(s)
`

String nome = entrada.nextLine();//grava na variável nome o valor digitado
String nomes = nome.trim().toUpperCase();//elimina os espaços iniciais e finais da string e grava na variável nomes
nomes.split(" “);//Essa parte não é preciso ( o .split vai rettornar um array String[] )
nomes.trim();//Aqui tb não é preciso usar , já que voce usou ela la em cima no (nome.trim().toUpperCase():wink:
String[] partesNome = nomes.split(” ");//grava na variavel partes do nome o nome particionado pelo métido split
String iniciais = " ";//inicia a string iniciais // Sempre eu inicinio uma String assim = “”; as aspas vazias
char letra = ’ ';//inicia a variável letra do tipo caractere
String [] reservadas = {“DO”, “DOS”, “DA”, “DAS”, “DE”, “A”};//declaração dos conectivos que devem ser excluídos

//Vou pressupor que você ja saiba usar o foreach esse usado abaixo

for (String partesNome1 : partesNome) {

//Nessa comparação abaixo você está fazendo errado já que reservadas é um vetor e não uma variavel comum no caso vc teria que comparar cada palavra dentro do vetor reservadas no caso assim:
// reservadas na posicao X == etc … “” Exemplo: reservadas[ i ] = Y ; “”
//
// na lógica nenhuma palavra do vetor reservadas vai ter mais de duas letras então suponamos ou seja todas vao ter entre 1 letra e 2 letra

Vamos trocar isso de baixo por isso
//if (partesNome == reservadas)
// continue;
// letra = partesNome1.charAt(0);
// iniciais += letra;
// }

Por isso:

for (String partesNome1 : partesNome) {

if (  partesNome1.length() < 3 ){//Se lembra la em cima se a palavra partesNome1  tiver mais que 2 /  //letras eu a ignoro ja que as palavras contidas no vetor reservadas tem entre 1 e duas letras

for (String partesNome1 : partesNome) {

    boolean temSim = false;
    
    if (partesNome1.length() < 3) { //Se for menor que 3
        for(String partesReservadas1: reservadas){ // eu criei outro for para percorrer o array reservadas
            if (partesNome1.contains(partesReservadas1)) { //esse contains funciona asssim se a palavra tiver uma cadeia de characteres vai dar true

DEINHA tem o DE no nome por isso eu coloquei pra entrar nesse if se a palavra apenas tiver menos que 2 letras
temSim = true;
break;
}
}
}

    if (temSim == false) {
        letra = partesNome1.charAt(0);
        iniciais += letra;
    }
    
}

}

}

System.out.printf("As iniciais do nome são: " +iniciais+"\n\n");

`

Desculpa ta muito feio minha resposta:

`for (String partesNome1 : partesNome) {

    boolean temSim = false;
    
    if (partesNome1.length() < 3) {
        for(String partesReservadas1: reservadas){
            if (partesNome1.contains(partesReservadas1)) {
                temSim = true;
                break;
            }
        }
    }
    
    if (temSim == false) {
        letra = partesNome1.charAt(0);
        iniciais += letra;
    }
    
}`

Opa

você está comparando a collection toda, por isso ele pega todas as palavras,
tem que pegar a primeira palavra e comparar com todo o Array de reservadas,caso
não seja igual a nenhum ai sim você pega a inicial.

abaixo o código, dá pra melhorar bastante este teu código, mas estou sem tempo e não compilei no netBeans, você está dando o split 2 vezes, sendo que a primeira não faz nada com ela, é desnecessário, outra coisa não precisa usar o .trim() na frase toda se depois você está usando em cada palavra individual.

abaixo o codigo que deve funcionar (não corrigi o acima mencionado por falta de tempo)

public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
    System.out.print("Informe o nome completo: ");
    String nome = entrada.nextLine();//grava na variável nome o valor digitado
    String nomes = nome.trim().toUpperCase();//elimina os espaços iniciais e finais da string e grava na variável nomes
    nomes.split(" ");//particiona o valor gravado na variável nome através do espaço em branco
    nomes.trim();//elimina os espaços em branco do início e do fim da string
    String[] partesNome = nomes.split(" ");//grava na variavel partes do nome o nome particionado pelo métido split
    String iniciais = " ";//inicia a string iniciais
    char letra = ' ';//inicia a variável letra do tipo caractere
    String[] reservadas = {"DO", "DOS", "DA", "DAS", "DE", "A"};//declaração dos conectivos que devem ser excluídos**
    for (String partesNome1 : partesNome) {
        boolean isReservada = false;
        for (String reservadas1 : reservadas) {
            if (partesNome1.equals(reservadas1))
                isReservada = true;
        }
        if (!isReservada) {
            letra = partesNome1.charAt(0);
            iniciais += letra;
        }
    }
    System.out.printf("As iniciais do nome são: " + iniciais + "\n\n");
}

tem 2 for, um pega a palavra e o outro varre as reservadas em busca da igualdade, coloquei uma flag isReservada, pra no fim verificar caso não seja igual, adiciona, acho que dá pra melhorar ainda, mas já dá uma idéia.

espero ter ajudado.

vixe enquanto eu respondia, você @Xore2008 foi mais rápido e respondeu melhor. kkkk bom se não entender por um entende por outro hehehe :slight_smile: