ps.print("Informe seu nome completo:\t");Stringnome=sc.nextLine();ps.print("Iniciais do seu nome:\t"+nome.charAt(0)+[b]nome.substring(nome.lastIndexOf(" ")+nome.charAt(0)));[/b]}
}
Se eu uso o length() o valor mostrado é JCorreia, pois o length() mostra a palavra inteira neh, pensei em usar o charAt() mais do jeito que eu estou colocando o programinha nao roda, a inicial do primeiro nome ta blz, o problema esta no segundo nome ;x
usa o nome.split(" ") para separar nome, sobrenome, 3o nome etc, e pega o 1º caracter de cada string separada
JorjaoCorreia
Mais como fica essa função no programa?
to começando agora no java, to bem nubao ainda
ahweihwaauiea ;x
B
Bruno_Laturner
privateStringiniciais(Stringnome){String[]array=nome.split(" ");// ou "\s+"Stringiniciais="";for(Strings:array)iniciais+=s.charAt(0).toUpperCase();returniniciais;}
Quem sabe funciona :)
JorjaoCorreia
Bruno, vlws cara =)
mais eu preciso de algo mais simples, com as funções da classe de strings e tals, sem laçoes de repetições,
é um exercicio que o professor passou pra gnt fazer e ainda nao começamos ver laços
iauwehaheiawuea
JorjaoCorreia
alguem sabe um jeito de fazer sem usar laços de repetições?
B
Bruno_Laturner
Se me perguntasse como colocar zeros à direita ou à esquerda sem loop, eu saberia, mas este? Desculpe.
marcosharbs
olha fiz usando um while, que é um loop simples, se não poder usar nem ele então quebra um poco mais a cabeça ai que vc consegue
ta ai:
Scannersc=newScanner(System.in);PrintStreamps=System.out;ps.print("Informe seu nome completo:\t");Stringnome=sc.nextLine();StringnomeAbreviado="";intcontador=0;nomeAbreviado+=nome.charAt(0);contador++;while(contador<nome.length()){Stringletra=String.valueOf(nome.charAt(contador));if(letra.equals(" ")){nomeAbreviado+=nome.charAt(contador+1);}contador++;}System.out.println("Iniciais do seu nome:\t"+nomeAbreviado);
JorjaoCorreia
Vlws xDD
mais eu preciso um sem laços msm, precisaria de uma maneira de usa-lo ali no substring, to tentando aqui mais ta complicado
auheuiawhehwaiuea
B
Bruno_Laturner
Gambiarra, mas:
Stringiniciais=nome.replaceAll("[^A-Z]+","");
JorjaoCorreia
nao deu certo cara :S
eu tentei de tudo quanto é jeito aqui e nao consegui tb, 5ª eu tenho aula de Java
eu vejo com o professor xDD
vlwsssss brotherrr =)))
negocinho complicado cara ;xx
aiuewhueawiuea
B
Bruno_Laturner
JorjaoCorreia:
nao deu certo cara :S
eu tentei de tudo quanto é jeito aqui e nao consegui tb, 5ª eu tenho aula de Java
eu vejo com o professor xDD
vlwsssss brotherrr =)))
deu certo mais ali ta falando pra substituir as maisculas neh,
eu preciso que ele substitua as iniciais independente de ser maiuscula ou minuscula, do jeito que ficou ali se eu digitar um nome sem as primeiras letras maiusculas ele nao retorna nada, intendeu?
com o charAt() eu consigo pegar a primeira letra do nome mais a segunda ta foda ;((
Brigadao cara xD
B
Bruno_Laturner
Ufa… cada vez que eu ia postar que isso é impossível de fazer sem loops, vinha uma luz.
Por acaso o professor do digníssimo quer que o programa seja feito com recursão? Aí não vai haver loops.
JorjaoCorreia
Bruno, agora deu certinho brother xDDDD
mais vc pode me explicar o código? ;x
pra que servem esses itens (\s*) “$2” ?
thingol
é que nao começamos a usar laços, tambem nao vimos recursão ainda, o professor passou um exemplo com charAt() mais era só pra pegar a primeira inicial do nome, agora ele passou um exercicio para pegar as inicias do nome e sobrenome e nao tem exemplo nenhum uhaiehawiueuwaiea, mais agora com o que o Bruno passou deu certinho
vou pedir pro professor como que é que ele queria que fosse feito, dai eu posto aqui no topico =))
B
Bruno_Laturner
Bem, essa String é uma Expressão Regular:
Grupos de expressões são separados por ( ). Neste caso tempos 4 grupos
\s*
[A-Za-z]
[A-Za-z]*
\s*
\s significa qualquer caracter de espaço em branco.
significa 0 ou mais desses caracteres em sequencia.
[A-Za-z] significa qualquer caracter de A a Z e de a a z.
O primeiro grupo casa com 0 ou mais espaços antes do primeiro caracter da palavra
O segundo casa com a 1ª letra da palavra
O terceiro casa com o resto das letras da palavra.
O quarto são os espaços depois da palavra.
$2 serve para imprimir o conteúdo do segundo grupo naquele lugar.
Enfim, replaceAll pega todas as Strings dentro de uma String que casem com aquele padrão, e as troca por uma outra String. No caso casamos uma palavra, e a trocamos pela primeira letra da palavra.
JorjaoCorreia
Intendi
Brigadao cara =))
JorjaoCorreia
tive aula de java ontem e falei com o meu professor, era um negocio que chega ser besta de tao simples
iuaeHWheauwheauiea
nome.charAt() + nome.lastIndexOf(" ") + 1;
ai ele pega o primeiro caracter depois do espaço =))
vlwssss
B
Bruno_Laturner
JorjaoCorreia:
tive aula de java ontem e falei com o meu professor, era um negocio que chega ser besta de tao simples
iuaeHWheauwheauiea
nome.charAt() + nome.lastIndexOf(" ") + 1;
ai ele pega o primeiro caracter depois do espaço =))
vlwssss
Dessa forma ele vai pegar somente a última inicial.
esqueci de por o primeiro charAt, assim ele pega as duas certinho =))
E se tiver 3 ou mais? Ou se tiver só um?
JorjaoCorreia
é que nesse caso ele pidiu pra fazer só com 2 nomes, dai com 2 nomes funciona certinho, mais se tiver mais de 2 realmente nao funcionaria
uaheahewaeuia =))
Vlws pela ajuda cara =)))
eu mostrei o seu exemplo pra ele tb, dai ele falo que tava certinho tb e tals, mais esse era pra pegar as iniciais do nome e do sobrenome só