Imprimi o primeiro nome de uma pessoa, sendo informado em execução o nome inteiro (ajuda)

quero criar uma classe que receba o nome completo e imprima apenas o primeiro nome, até agora ta assim mais ainda da erro:

import java.lang.*;
public class RevisNome{
	public static void main(String[]arg){
		String Nome = "David Kennedy", pnome,x;
		Object ch[]= new String[13];

		for (int i=0;i<=13;i++){
			if(ch[i]==" ") ch[i]=new Integer(1);
		ch[i]=Nome.charAt(i)+"";
		System.out.println(i+" "+ch[i]);

		if (ch[i]==null){
		}
		else{
		pnome=Nome.substring(0,i+1);
		System.out.println("primeiro nome: "+pnome);
		}
		}
		System.out.println(ch[2]);
	}
}

não imprime apenas o primeiro, mas, inteiro desfragmentado.

Bem David

Acho desnecessário usar char… prefiro navegar na String com Substring até encontrar o espaço.
Veja se assim resolve…

public class RevisNome{
	public static void main(String[]arg){
				String nome = "David Kennedy Souza Araujo";
				String primeiroNome = "";
				
				for (int i=0;i<nome.length();i++){
					if ((i==0) && (nome.substring(i, i+1).equalsIgnoreCase(" "))){
						System.out.println("Erro: Nome digitado iniciado com tecla ESPAÇO.");
						break;
					}
					else if (!nome.substring(i, i+1).equalsIgnoreCase(" ")){
						primeiroNome += nome.substring(i, i+1);
					}
					else
						break;
						
				}
				System.out.println(primeiroNome);


	}
}

Abraços

muito bom, mais sou leigo em java, pode me explicar qual a utilidade do break e como foi o seu raciocínio?

Ja consegui o seguinte modelo que funciona! mais não sei bem como foi criado, não estou conseguindo iterpretar

[code] public static void main(String[] arg) {
String nome = JOptionPane.showInputDialog(null, “Insira o nome completo:”);

    String primeiroNome = "";
    for(int i = 0; i < nome.length(); i++){
        if(nome.charAt(i) == ' '){
            System.out.println("Primeiro nome: " + primeiroNome);
            break;
        } else {
            primeiroNome += nome.charAt(i);
        }
	}
}

}
[/code]

O break faz com que o loop seja finalizado e a execução continue. A idéia dele é interar uma string e quando chegar num caracter vazio o programe pare, pois é claro que o primeiro nome já foi achado. No entanto, ele faz um tratamento se a string iniciar com um caracter (isso faz com que o programa não funcione direito). Outra forma mais simples de fazer abaixo:

String nomeCompleto = "Seu nome";  
         String primeiroNome = "";
         int i = 0;
         boolean fim = false;
         
         while ((i < nomeCompleto.length()) && !fim) {
			if (nomeCompleto.charAt(i) != ' ') {
				primeiroNome += nomeCompleto.charAt(i);
				i++;
			} else {
				fim = true;
			}
		 } 
         System.out.println(primeiroNome);

Olha aí… esse codigo ta melhor que o meu… eu esqueci do charAt…

  • na primeira condição do If, ele compara o caracter lido com o espaço. se for o espaço, imprime o atributo primeiroNome;

Obs.: o break é usado para parar uma estrutura de repetição, como For, While, Switch (onde é mais usado). Qdo é chamado, a estrutura de repetição se quebra e não é mais executada.

  • no caso do else, ou seja, se o caracter nao for o espaço, ele vai add ao primeiroNome o carcater lido.

blz?

Abraços

Legal vlw pela ajuda mesmo!

String nomeCompleto = "Seu nome"; String primeiroNome = nomeCompleto.substring(0, nomeCompleto.indexOf(' '));
Ou

String nomeCompleto = "Seu nome"; String primeiroNome = nomeCompleto.split(" ")[0];

Rápido e Fácil.
Vivendo e aprendendo.

Parabéns e Obrigado.

Olá David, desculpe esqueci de explicar o funcioanemto do meu código ali no outro fórum que você criou.
Mas exlicando sobre o split que foi citado ali emcima e que eu havia pedido para você ler a documentação:

O método split recebe como parâmetro uma String, e ele irá quebrar a String que você estiver usando tendo como quesito de quebra a String que o método recebe como parâmetro; e o retorno do método é um array de String contendo em casa posição um trecho do texto que ele dividiu.

Por exemplo:

String texto = "Exemplo de split";
String[] resultado = texto.split(" ");
for(int i = 0; i < resultado.length; i++){
	System.out.println(resultado[i]);
}

Tem como saída:

Exemplo
de
split

Então é por esse motivo que você precisa fazer nomeCompleto.split(" ")[0], porque o split está retornando um vetor com todas as partes do nome da pessoa, e como você quer apenas o primeiro, acessa direto a posição zero do array.

Espero que tenha ficado claro :slight_smile: