Exibe Iniciais do nome completo em maiúsculo

3 respostas
V

Oi pessoal preciso de um help de vocês.
Tenho que criar um programa que receba o nome do usuário da tela. E exiba na tela as iniciais do nome todo em letra maiúscula. Fiz da forma que postei abaixo, porém o programa não compila. Não sei o que estou fazendo de errado.

Trecho do código
System.out.print("Nome: ");
    String nome = input.nextLine();
    String nomes = nome.trim().toUpperCase();
    nomes.split(" ");

    nomes.trim();
    
    String[] partesNome = nomes.split(" ");
    String iniciais = " ";
    char letra = ' ';
    String[] reservadas = {"DO", "DOS", "DA", "DAS", "DE", "A"}; 

    for (int ini = 0; ini < partesNome.length; ini ++){
        if ( partesNome == reservadas ){
            continue;

            letra = partesNome.charAt(0);
            iniciais += letra;
         }
    }
    System.out.printf("%15s %c", "\nIniciais do nome: ", iniciais);

Obrigada :(

3 Respostas

M

Cara tem um jeito bem simples:

Scanner input = new Scanner(System.in);

		System.out.print("Nome: ");
		String nome = input.nextLine().toUpperCase();

		System.out.print("Iniciais do Nome: ");
		System.out.print(nome.charAt(0));
		for (int i = 0; i < nome.length(); i++) {
			if (nome.charAt(i) == ' ') {
				System.out.print(nome.charAt(i + 1));
			}
		}

do jeito que vc fez tem alguns erros na hora do for
por exemplo:

partesNome.charAt(0);

como é um array vc deve colocar da seguinte forma

partesNome[ini].charAt(0);
V

Obrigada MuCReis funcionou. :smiley:

Outra Dúvida 1
Agora como faço para remover os espaços em branco entre as letras caso seje digitado assim:
Usuário entra com: Maria Firmina Costa
Imprime assim: MF C
Gostaria que saísse assim: MFC
Estou usando o trim() mais não está funcionando para mais de um espaço em branco digitado.

Outra Dúvida 2
Na hora que imprimir as iniciais do nome, não pode considerar as iniciais dos conectores (preposições) tipo assim:
Usuário entra: Maria Firmina da Costa
Imprime iniciais: MFDC
O “D” não é para sair, pois é um conectivo.
Fiz um if lá na solução que postei, mas não sei se está certo, ou se existe outra forma de fazer.

Obrigada

W

Caro vick01,
Quanto a sua duvida 1, só pode utilizar o metodo replaceAll de uma String, pesquisa sobre ele, tem uma utilidade boa, quanto a duvida 2 seu laco for tá quse certo.
Vou explicar o que tá errado e voce tenta corrigir.
o laco for ta certo

for (int ini = 0; ini < partesNome.length; ini ++){

seu if esta verificando se o vetor partesNome inteiro é igual ao vetor reservadas inteiro, ou seja a mesmo que o usuario tenha o nome de “DO”, “DOS”, “DA”, “DAS”, “DE”, “A”, examente assim nunca entrará no seu if.

if ( partesNome == reservadas ){  
             continue;  
   
             letra = partesNome.charAt(0);  
             iniciais += letra;  
          }  
     }

Novamente o metodo o metodo replace será util

Criado 16 de setembro de 2010
Ultima resposta 16 de set. de 2010
Respostas 3
Participantes 3