Pregunta

entonces tengo que escribir un código java para:

  • Introduzca un nombre
  • Nombre del formato en mayúsculas y minúsculas
  • Introduzca el segundo nombre
  • Nombre del formato en mayúsculas y minúsculas
  • Mostrarlos en orden alfabético

Sé que la clase Java Character tiene los métodos isLowerCase(), isUpperCase, toLowerCase() y toUpperCase(), que puedes usar para revisar una cadena, carácter por carácter.Si el primer carácter está en minúscula, conviértalo a mayúscula y, para cada carácter siguiente, si el carácter está en mayúscula, conviértalo a minúscula.

La pregunta es ¿cómo reviso cada letra?¿Qué tipo de variables y cadenas debería contener?¿puedes ayudar por favor?

¿Fue útil?

Solución

Debe usar StringBuilder, cuando se ocupe de la manipulación de cadena. De esta manera, terminas creando un número menor 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);
}

Otros consejos

Puede convertir el primer carácter en mayúsculas, y luego en minúscula el resto de la cadena:

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

Para atravesar cadenas usando solo la clase String, repita cada carácter de una cadena.

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 pregunta responde cómo "cambiar" una cadena; no puedes.Sin embargo, la clase StringBuilder proporciona métodos convenientes para editar caracteres en índices específicos.

Parece que desea asegurarse de que todos los nombres estén correctamente escritos en mayúscula, por ejemplo:"martin ye" -> "Martin Ye", en cuyo caso querrás recorrer la entrada de Cadena para asegurarte de que el primer carácter de la Cadena y los caracteres después de un espacio estén en mayúscula.

Para alfabetizar una Lista, sugiero almacenar todos los nombres ingresados ​​en una ArrayList o algún otro objeto de Colecciones, crear un Comparador que implemente Comparador y pasarlo a Collections.sort()...ver esta pregunta en Comparable vs Comparador.

Esto debería arreglarlo

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 tiene un método toCharArray que devuelve un recién asignado char[] de sus personajes.Recuerda que mientras Stringsomos inmutable, los elementos de las matrices se pueden reasignar.

Similarmente, String tiene un constructor eso toma un char[] representando a los personajes de la recién creada String.

Entonces, al combinarlos, tienes una forma de llegar desde un String a un char[], modificar el char[], y de vuelta a una nueva String.

Esto se puede lograr de varias maneras, la mayoría de las cuales se reducirán a los detalles de los requisitos.

Pero la premisa básica es la misma. String es inmutable (su contenido no se puede cambiar), por lo que es necesario extraer los caracteres del String, convierta el primer carácter a mayúscula y reconstituya un nuevo String desde el char formación.

Como ya se ha señalado, esto es relativamente sencillo.

La otra cosa que quizás deba hacer es manejar varios nombres (nombre, apellido) en una sola pasada.Nuevamente, esto es relativamente simple.La parte difícil es cuando es posible que necesites dividir una cadena en múltiples condiciones, entonces tendrás que recurrir a una expresión regular.

He aquí un ejemplo muy sencillo.

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top