/ / ¿Cómo concatenar un carácter a una cadena? - Java, eclipse, string, char, concatenación

Cómo concatenar un personaje a una cadena? - java, eclipse, cadena, char, concatenación

Estoy tratando de escribir un programa que creepalabras aleatorias, usando el generador aleatorio. Pero, ¿cómo agrego los caracteres que crea el generador aleatorio a la cadena? Y es el "a: z" ¿verdad? o cómo decirle al generador que use todos los números entre a y z

public class StringTraining extends ConsoleProgram {
public void run() {
String s1 = null;
randomChar();
s1.concat(randomChar());
println(s1);
}

private String randomChar() {
String word = rgen.nextBoolean() ? "a" : "z";
return word;
}

Respuestas

0 para la respuesta № 1

Java Strings son inmutables, por lo que no puede modificar una cadena de ninguna manera. s1.concat(...) te devuelve un nuevo String objeto. Puedes hacer algo como s1=s1.concat(...) si es necesario o use el StringBuffer clase que implementa cadenas mutables, si necesita algo de rendimiento.


0 para la respuesta № 2
(condition) ? ifTrue : ifFalse

Eso es lo que está haciendo su método. Usted está diciendo "Si generamos una declaración verdadera usamos a, si generamos una falsa usamos z".

Parece que desea utilizar caracteres aleatorios en el RANGO de a a z. La forma más limpia de hacerlo probablemente sería usar caracteres y generar un número a partir de un rango.

Los personajes actúan internamente más o menos igual queenteros, donde puede agregarlos para incrementar los posibles caracteres. Debido a esto, solo desea generar un personaje en el rango "a" a "z". Ha pasado un tiempo desde que toqué Java, así que no sé si hay una manera simple de hacerlo. Pero si desea hacerlo de una manera un poco más desordenada buscando bibliotecas que lo hacen por usted, puede comenzar con "a" y generar un número aleatorio entre 0 y 25 (inclusive) y agregar el resultado a "a ". "a" + 1 va a devolver "b", por ejemplo.

¡Entonces solo agrega ese carácter a tu palabra y estarás listo!

nota: los caracteres y las cadenas son diferentes. Esta lógica NO se aplicará a las cadenas. Deberá utilizar comillas simples en lugar de comillas dobles para inicializar su "a" como carácter.


0 para la respuesta № 3

Literalmente pasé hoy haciendo esto por diversión como una experiencia de aprendizaje. Quizás alguien más pueda dar una respuesta más elegante que yo, pero así es como lo hice.

public static String getString(){

char[] result = new char[10];

for(int a=0; a<result.length; a++){
result[a] = getLetter();
}

return new String(result);
}

public static char getLetter(){

boolean case = true;
if((1 + (Math.random() * 2) == 2){
case = false;
}

if(case){
switch((int) (1 + (Math.random() * 26))){

case 1:
return "a";
case 2:
return "b";
case 3:
return "c";
case 4:
return "d";
case 5:
return "e";
case 6:
return "f";
case 7:
return "g";
case 8:
return "h";
case 9:
return "i";
case 10:
return "j";
case 11:
return "k";
case 12:
return "l";
case 13:
return "m";
case 14:
return "n";
case 15:
return "o";
case 16:
return "p";
case 17:
return "q";
case 18:
return "r";
case 19:
return "s";
case 20:
return "t";
case 21:
return "u";
case 22:
return "v";
case 23:
return "w";
case 24:
return "x";
case 25:
return "y";
case 26:
return "z";

}
}else{
switch((int)(1 + (Math.random() * 26))){

case 1:
return "A";
case 2:
return "B";
case 3:
return "C";
case 4:
return "D";
case 5:
return "E";
case 6:
return "F";
case 7:
return "G";
case 8:
return "H";
case 9:
return "I";
case 10:
return "J";
case 11:
return "K";
case 12:
return "L";
case 13:
return "M";
case 14:
return "N";
case 15:
return "O";
case 16:
return "P";
case 17:
return "Q";
case 18:
return "R";
case 19:
return "S";
case 20:
return "T";
case 21:
return "U";
case 22:
return "V";
case 23:
return "W";
case 24:
return "X";
case 25:
return "Y";
case 26:
return "Z";
}
}
return "";
}