Um usuário digitará uma parágrafo e devo mostrar isto é frase invertida e em maiúsculo. Como posso fazer isto?

import javax.swing.JOallofit.netionPane; público class ExerLar01 publicamente static void main(String args<>) char vetor<>; String frase = JOallofit.netionPane.showInputDialog(null, "Digite ns frase: "); vetor = frase.toCharArray();

*

*

Tente alavancada o caminho reverse são de StringBuilder:

String hello = "Hello world";System.out.println(new StringBuilder(hi).reverse().toString());Veja aquela exemplo funcionando aqui no IDEONE.

Você está assistindo: Como inverter a letra no word

Adaallofit.netando para dele caso:

String parágrafo = JOallofit.netionPane.showInputDialog(null, "Digite uma frase: "); cable fraseInvertida = novo StringBuilder(frase).reverse().toString(); System.out.println(fraseInvertida);//ou JOallofit.netionPane.showMessageDialog(null, fraseInvertida); Isso só funciona se naquela versão são de JDK for 1.5 alternativa superior. Ao versões mais antigas, basta alterar StringBuilder através StringBuffer.

Referencia: Reverse naquela string in Java.


dividido
Melhore isto é resposta
seguir
user28595user28595
11
Sarah sim, excluir uma classe para exercício Strings, portanto como der StringBuffer também.
–user28595
one
hkotsubo eu entendo, algum há problema algo na sua resposta, que inclusive permaneceu ótima, pela sinal. Somente comentei lá você fez questão de citação a autora aqui nos comentários, o que ele pode levar naquela uma interpretação errônea dela de que naquela minha resposta isto é errada. Apenas um quis deixar clara que em nenhum momento obtivermos mencionado naquela situação que você abordou, e o foco do site denominada objetividade, se naquela gente ao parar pra endereço todas der situações possiveis, as antic vão fique cansativas e sem borda para o que outros, como você mesmo feita aqui, responderem com complementos.
–user28595
| Mostrar adicionar 6 comentários
16
Apenas complementando, der solução proposta alcançar StringBuilder efeito muito bem, mas há caso que algum são cobertos, se levarmos em conta tudo de as possibilidades são de Unicode.

Um exemplo denominações quando os caracteres são acentuados. Através exemplo, í (a letra i alcançar acento agudo), segundo ministérios Unicode, capaz representada de duas maneiras:

como uma combinação de dois code points:

Code points são valores numéricos que ministérios Unicode definir para por caractere. Compreender melhor, recomendo naquela artigo (em inglês) e isto é pergunta (em português).

A primeira opção é ligar Normalization type C (NFC) e a segunda, Normalization form D (NFD) - ambas descritas aqui, e demasiado há uma declaração nesta pergunta. Na forma NFD, emprego caractere o que corresponde ~ por acento agudo (COMBINING ACUTE ACCENT) excluir aplicado aos caractere anterior (no caso, der letra ns - latino SMALL LETTER I), e enquanto você imprime a String, ambos "se juntam", formando o í.

É viabilidade ter Strings nas dois formas, e ao imprimí-las, ambas serão mostradas gostar í. Contudo internamente, os code points ser diferentes. O mesmo vale ao os demais personagem acentuados, como ô, ã e até mesmo personagem que algum são necessário acentuados, como o ç, o que na forma NFD resultado na letra este c seguida a partir de caractere cedilha (COMBINING CEDILLA).

Saber disso denominada importante conseguinte método StringBuilder::reverse inverte der ordem a partir de code points, o que significa o que o resultados pode que ser o esperado, isso depende de da formato que der String está. Para mostrar ministérios que acontece quando naquela String isto é em NFD, vou alavancada a aulas java.text.Normalizer, para crio uma string normalizada em NFD, e em então usarei o StringBuilder porque o invertê-la:

// normalizar em NFDString s = Normalizer.normalize("ímãs", Normalizer.Form.NFD);System.out.println(s); // ímãss = novo StringBuilder(s).reverse().toString();System.out.println(s); // s̃aḿiO método Normalizer::normalize parte traseira a string normalizada em NFD. A quer falar que í isto é internamente guardado como dois code points: der letra i e ministérios acento agudo. O idênticas vale para o ã, o que na formato NFD corresponde a a dois password points: der letra a e emprego til.

Repare que ~ por imprimir, aqueles code points eles são mostrados como se passou a ser uma coisa só (os caracteres í, ã). Mas ao inverter naquela String, o til eu fiquei em acima de do s e ministérios acento fiquei em acima de do m. Isso acontece porque emprego StringBuilder inverteu all os password points. Em é diferente palavras:

Code points da String original (ímãs) normalizada em NFD:StringBuilder::reverse inverte os codepoints:

Após a inversão feita por StringBuilder::reverse, ministérios acento agudo ficou mais tarde da carta m, através dos isso ele é aplicado nisso letra, e o i fique sem acento. O idênticas vale para ministérios til, que depois de a inversão, ficou depois do s e através dos isso é aplicado nesta letra (e não no a). Se o seu console que mostrar correta a saída, de acordo com uma foto de como ficou aqui:

*

O StringBuilder apenas um funcionará se naquela String estiver normalizada em NFC, pois nesse situação os caracteres acentuados serão emprego í (LATIN little LETTER I com ACUTE) e ministérios ã (LATIN small LETTER der WITH TILDE). Gostar de eles são representa por somente um músicas code point, ministérios acento destes caracteres não "muda de lugar" depois de ~ a ligar de StringBuilder::reverse.

O assuntos é que você pode renomado a wire em não uma ns formas, contudo se você imprimí-la, sempre será mostrada como ímãs. No decorrer exemplo acima de eu forcei naquela String para ser em NFD e pela isso tu pode achar que isso que vai acontecem em "condições normais", contudo pode acontecem de um do utilizador copiar (Ctrl+C) um texto de algo lugar e colar (Ctrl+V) na seus aplicação, e se ministérios texto originais estiver em NFD, os acentos da wire invertida ficarão trocados. Algum há como controlar naquela (o texto original pode ser em qualquer é diferente programa que ministérios usuário estiver usando, e ministérios usuário sequer você sabe se isso é em NFD alternativa NFC, porque na tela sempre é mostrado ministérios acento corretamente) - olhe para um instância neste connect (copie e cole as palavra mañana (NFC) e mañana (NFD), e veja naquela diferença).

Então ns solução seria alavancada o caminho Normalizer::isNormalized para confirme se naquela String está normalizada em NFC, e caso não esteja, normalizá-la adiantado invertê-la:

// inverte naquela String mantendo os acentosif (! Normalizer.isNormalized(s, Normalizer.Form.NFC)) // se algum está em NFC, normaliza s = Normalizer.normalize(s, Normalizer.Form.NFC);s = new StringBuilder(s).reverse().toString(); // sãmíCom isso, os acentos são preservado nos caracteres corretos e o resultado é sãmí (se quiser, pode ligar normalize direto, pois situação a string já é em NFC, ela algum será alterada). Mas isso mas não deal with todos os casos.

Emojis

Emojis adicionam 1 nova classe de complicação nessa história. E gostar de o seu uso denominações cada vez adicionar comum, denominações importante sabe trabalhar com eles.

Geralmente os emojis exchange mail a um code point, contudo nem sempre denominada o caso. Os emojis de famílias, através exemplo, elas combinações de outros emojis. Através dos exemplo, ns família alcançar pai, mãe e 2 filhas denominações na na realidade uma associação do emoji de um homem, uma sra e dois emojis de menina. Porque o juntá-los, é aproveitou o caractere ZERO broad JOINER (também chamado apenas de ZWJ - e isto sequências de emojis separados por ZWJ são chamada telefónica de Emoji ZWJ Sequences).

Ou seja, ministérios emoji de "família alcançar pai, mamãe e 2 filhas" denominada na verdade uma sucessão de sete password points:

Esta sequência de codepoints pode está dentro mostrada de diferentes maneiras. Se o sistema/programa aproveitou reconhece isto é sequência, denominações mostrada ns única foto da família:

*

Mas se esta sequência algum é suportada, os emojis são mostrando um ~ por lado do outro:

*

Independente de gostar são mostrados, através dos ser 1 sequência o que pode aplicável a um músicas símbolo, algum podemos alternar a ordem a partir de code points, pois aí ele ele sai de estar interpretado como a Emoji ZWJ Sequence de "família com pai, mãe e 2 filhas". Uma vez usarmos StringBuilder::reverse (mesmo se normalizarmos para NFC, de acordo com sugerido acima), der ordem esses code points será trocada porque o "GIRL, ZWJ, GIRL, ZWJ, WOMAN, ZWJ, MAN" e não teremos acrescido o "emoji de família".

Existem ainda outras sequências que algum são separadas através dos ZWJ, gostar de os emojis de bandeiras dos países. Bonito de criar um password point para cada bandeira de cada pais existente no decorrer mundo, foram feito símbolos indicadores de área (Regional Indicator Symbols), que são sinal que aplicável às letras de naquela a Z (não são as letras propriamente ditas, são sinal correspondentes naquela estas letras, contudo que ficam em outro bloco do Unicode).

Os código seguem a definir da ISO 3166, na que cada pai possui um código alcançar 2 letras. Naquela Austrália, por exemplo, sim o código "AU", então para pendência o emoji da bandeira da Austrália, basta aproveitar os personagem correspondentes às cartas "A" e "U" nós Regional Indicator Symbols, o que no circunstâncias são:

Com isso, os sistemas/programas podem mostrar estes 2 password points gostar a bandeira da Austrália:

*

Ou, circunstâncias esta não seja suportada, mostra-se uma representação no próprios caracteres:

*

Se o seu console que suporta nem naquela representação destas caracteres, isso pode ser que ele só mostre ? ou quadrados em branco.

Independente de como é mostrado, os dois área Indicator Symbols aplicável a um solteiro "caractere" (a um músicas "desenho na tela"), e deve ser tratados gostar de se passou a ser uma página só.Porém, se usarmos StringBuilder::reverse, os code points são invertidos e o achados são os área Indicator Symbols correspondentes a "UA". E como "UA" excluir o código da Ucrânia, emprego emoji resultante denominações a bandeira da Ucrânia:

// bandeira da Austráliaint<> cp = 0x1f1e6, 0x1f1fa ;String australia = new String(cp, 0, cp.length);System.out.println(australia); // bandeira da AustráliaString s = novo StringBuilder( // normalização não muda père neste circunstancias Normalizer.normalize(australia, Normalizer.Form.NFC)) // inverte os codepoints, passando a ser "UA" bonito de "AU" .reverse().toString();System.out.println(s); // bandeira da UcrâniaCaso seu console que seja compatível com emojis, de acordo com uma fotografias de gostar de seria a saída disto código:

*

Ou, no circunstancias dos emojis de bandeiras algum serem suportados, capaz que der saída seja:

*

Para eu imploro seu perdão isso algum aconteça, os dois área Indicator symbols ("A" e "U") deve ser tratados como se passou a ser uma capeto só, mas alcançar StringBuilder isso não é possível.

Tecnicamente, a sequência de dois regional Indicator icons representa ministérios país/região (não necessário a bandeira em si), contudo muitos sistemas usualmente mostrar as respectivas bandeira quando estes sinal são impressos.

Enfim, além dos casos já citados, havido muitos outros previstos no decorrer Unicode, nós quais dois ou adicionar code points eles são interpretados gostar um solteiro "caractere". Emprego nome dar para isto sequências denominada Grapheme Cluster.

Ver mais: Como Saber Quem Deixou De Me Seguir No Instagram Grátis, Como Saber Quem Deixou De Me Seguir No Instagram

Como StringBuilder::reverse simplesmente inverte os password points, sem considerado se ela são parte de um Grapheme Cluster, der solução porque o inverter correto uma wire é adicionar complicada são de que simplesmente chamar este método.

Uma seleção de solução denominada ler o documento dá Unicode que descreve os Grapheme Clusters e implementá-lo. Deixo a como atribuição para emprego leitor