from convertir array java string char concatenation

java - convertir - netbeans string to char



char+String que da un resultado extraño (5)

Pregunta: Dada una cuerda, toma los primeros 2 caracteres y devuelve la cadena con los 2 caracteres añadidos tanto en la parte delantera como en la parte posterior, para que "gatito" produzca "kikittenki". Si la longitud de la cuerda es menor que 2, usa los caracteres que estén allí.

front22("kitten") → "kikittenki" front22("Ha") → "HaHaHa" front22("abc") → "ababcab"

Mi respuesta:

public String front22(String str) { if(str.length() > 2) { char first = str.charAt(0); char second = str.charAt(1); return first + second + str + first + second; } return str + str + str; } Results: Expected Run results front22("kitten") → "kikittenki" "212kittenki" X front22("Ha") → "HaHaHa" "HaHaHa" OK front22("abc") → "ababcab" "195abcab" X front22("ab") → "ababab" "ababab" OK front22("a") → "aaa" "aaa" OK front22("") → "" "" OK front22("Logic") → "LoLogicLo" "187LogicLo" X

Entonces, ¿de dónde vienen los números, es decir, 212, 195 y 187 que están delante de mi producción? Soy nuevo en JAVA. Lo siento si esto es algo muy simple o básico que no sé. Sé que podría haberlo hecho de la siguiente manera, pero solo quiero saber qué está pasando con mi primera respuesta.

public String front22(String str) { if(str.length() > 2){ return str.substring(0,2) + str + str.substring(0,2); } return str + str + str; }

Gracias por tu tiempo;


De tipo conversión a byte. La primera operación más se tratará como operación numeerical (se usarán códigos de carbón como entrada) que le dará el número, que luego se convertirá en una cadena que se adjuntará a la siguiente cadena. Si comienza su estado con "" todas las operaciones se tratarán como concatenación.


Esa es la suma ascii de los personajes:
Para su primer caso, tengo ascii 105 y k tiene ascii 107 por lo que su suma es 212 .
Pruebe str.subString(0, 2) lugar de agregar las variables char .


Esto es lo que está pasando. La declaración de devolución intenta agregar los dos primeros caracteres y luego la cadena entra en la imagen y, por lo tanto, los dos últimos se interpretan correctamente como caracteres y se agregan a la cadena, mientras que para los dos primeros su suma ascii se agrega al comienzo.


Los interpreta en su forma entera de carácter y los agrega.

Puede solucionar esto asegurándose de devolver una Cadena:

return "" + first + second + str + first + second;

O:

return (String) (first + second + str + first + second);


Su método intenta resumir esos valores como enteros. tienes que convertir el primer elemento en una cadena para evitar este problema, o usar un StringBuilder.

''L'' = 76 ''o'' = 111 76 + 111 = 187 187 + "String" = "187String"

Solución 1:

return Character.toString (primero) + segundo + str + primero + segundo;

Solución 2:

StringBuilder builder = new StringBuilder(); builder.append(first); builder.append(second); builder.append(str); builder.append(first); builder.append(second); return builder.toString();