Pergunta

então eu tenho que escrever um código java para :

  • Insira um nome
  • O formato de nome em caso de título
  • Entrada do segundo nome
  • O formato de nome em caso de título
  • Exiba-os em ordem alfabética

eu sei que O Java classe de Personagem tem os métodos isLowerCase(), isUpperCase, toLowerCase() e toUpperCase(), que você pode usar na revisão de um string, caractere por caractere.Se o primeiro caractere é minúsculo, converter para maiúsculas, e para cada uma sucessão de caracteres, se o caractere é maiúsculo, convertê-lo em minúsculas.

a questão é como eu verificar cada letra ?que tipo de variáveis e seqüências de caracteres deve ser contido ?você pode por favor ajudar?

Foi útil?

Solução

Você deve usar StringBuilder, whenver lidar com a manipulação de Seqüência de caracteres..Desta forma, você acaba de criar o menor número de objetos..

StringBuilder s1 = new StringBuilder("rohit");
StringBuilder s2 = new StringBuilder("jain");

s1.replace(0, s1.length(), s1.toString().toLowerCase());
s2.replace(0, s2.length(), s2.toString().toLowerCase());            

s1.setCharAt(0, Character.toTitleCase(s1.charAt(0)));
s2.setCharAt(0, Character.toTitleCase(s2.charAt(0)));

if (s1.toString().compareTo(s2.toString()) >= 0) {
    System.out.println(s2 + " " + s1);

} else {
    System.out.println(s1 + " " + s2);
}

Outras dicas

Você pode converter os primeiros caracteres para letras maiúsculas e minúsculas, em seguida, o restante da seqüência de caracteres:

String name = "jOhN";
name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase(); 
System.out.println(name); // John

Para atravessar Seqüências de caracteres usando apenas a classe String, iterar cada caractere em uma seqüência de caracteres.

String s = "tester";
int size = s.length(); // length() is the number of characters in the string
for( int i = 0; i < size;  i++) {
    // s.charAt(i) gets the character at the ith code point.
}

Esta pergunta respostas como "alterar" uma Seqüência de caracteres - você não pode.A classe StringBuilder fornece métodos convenientes para a edição de caracteres de índices específicos embora.

Parece que você quer certificar-se de que todos os nomes estão devidamente capitalizada, por exemplo:"martin vós" -> "Martin Vós" , caso em que você vai querer atravessar a entrada de Seqüência de caracteres para certificar-se de que o primeiro caractere da String de caracteres e depois de um espaço de capitalização.

Para colocar em ordem alfabética uma Lista, sugiro armazenar todos inseridos nomes para um ArrayList ou outras Coleções de objeto, a criação de um Comparador que implementa sistema de Comparação, e de passagem, que a Coleções.sort()...ver esta pergunta em termos vs Comparador.

Isso deve resolver

List<String> nameList = new ArrayList<String>();
    nameList.add(titleCase("john smith"));
    nameList.add(titleCase("tom cruise"));
    nameList.add(titleCase("johnsmith"));
    Collections.sort(nameList);
    for (String name : nameList) {
        System.out.println("name=" + name);
    }

public static String titleCase(String realName) {
    String space = " ";
    String[] names = realName.split(space);
    StringBuilder b = new StringBuilder();
    for (String name : names) {
        if (name == null || name.isEmpty()) {
            b.append(space);
            continue;
        }
        b.append(name.substring(0, 1).toUpperCase())
                .append(name.substring(1).toLowerCase())
                .append(space);
    }
    return b.toString();
}

String tem um método toCharArray que retorna um recém-alocado char[] de seus personagens.Lembre-se de que, enquanto Strings são imutável, elementos das matrizes podem ser reatribuídos.

Da mesma forma, String tem um construtor que demora char[] representando os personagens do recém-criado String.

Para combinar esses, você tem uma maneira de obter a partir de um String para um char[], modificar o char[], e de volta para um novo String.

Isto pode ser conseguido em qualquer número de formas, a maioria dos quais vêm para baixo para os detalhes dos requisitos.

Mas a premissa básica é a mesma. String é imutável (seu conteúdo não pode ser alterado), então você precisa de distância para extrair os caracteres da String, converter o primeiro caractere para maiúsculo e reconstituir um novo String do char matriz.

Como já foi apontado, isso é relativo simples.

A outra coisa que você precisa fazer, é lidar com vários nomes (primeiro, último) em uma única passagem.Novamente, isso é relativamente simples.A parte difícil é quando você pode precisar para dividir uma string em várias condições, em seguida, você precisará recorrer a uma expressão regular.

Aqui está um exemplo muito simples.

String name = "this is a test";
String[] parts = name.split(" ");
StringBuilder sb = new StringBuilder(64);
for (String part : parts) {
    char[] chars = part.toLowerCase().toCharArray();
    chars[0] = Character.toUpperCase(chars[0]);

    sb.append(new String(chars)).append(" ");
}

name = sb.toString().trim();
System.out.println(name);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top