Java - Como puedo hacer introducir una palabra y que me la revuelva

 
Vista:
sin imagen de perfil

Como puedo hacer introducir una palabra y que me la revuelva

Publicado por Ces (1 intervención) el 15/02/2020 21:43:58
Hola amigos... me podrían decir como puedo hacer para introducir una palabra y que revuelva las letras
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 1.938
Oro
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Como puedo hacer introducir una palabra y que me la revuelva

Publicado por Kabuto (481 intervenciones) el 16/02/2020 01:26:15
Una vez tienes la palabra del usuario, puedes crear un array de Character que tenga la misma longitud de la palabra introducida.

Luego, con un bucle, recorres la palabra original letra a letra (carácter a carácter) e intentas colocar cada letra en una posición al azar del array de Character.
Para ello, generas un int al azar entre 0 y la longitud de la palabra (o del array, tienen misma longitud) menos 1 . Como ya sabemos, si un array tiene una longitud de 10, sus posiciones válidas son del 0 al 9.

Una vez tenemos la posición al azar, comprobamos si dicha posición esta libre preguntando si su valor es null.
Si es null, es que esa posición está libre y podemos colocar el carácter.
Si no es null, es que en esa posición ya hemos metido un carácter anteriormente y por tanto habrá que repetir el proceso de generar un nuevo número al azar y volver a intentarlo.
Por tanto, todo esto se haría dentro de un segundo bucle anidado dentro del otro bucle que recorre cada letra de la palabra.

Te recomiendo encarecidamente que intentes tú programar el proceso que he comentado.
Equivócate, atáscate, haz un desastre... y entonces pide aquí consejo de como seguir.

De todos modos te dejo aquí mi código haciendo lo que he comentado, pero insisto en que mejor no lo mires, al menos hasta que primero hayas intentado hacerlo tú por tu cuenta.

Un saludo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.util.Scanner;
 
public class Revolver {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
		System.out.print("Introduzca palabra: ");
		String palabra = teclado.nextLine();
		teclado.close();
 
		//Creamos un array de caracteres de misma longitud que la palabra
		Character[] revuelta = new Character[palabra.length()];
 
		//Recorremos caracteres de la palabra y la colocamos en posiciones al azar del array
		for (int i = 0; i < palabra.length(); i++) {
			/*
			 * Generamos posiciones al azar e intentamos colocar
			 * caracter en el array. Solo se podrá colocar si el
			 * elemento del array está "disponible" (es null).
			 * Si no se puede colocar porque ya existe un caracter,
			 * repetimos el proceso con un nuevo numero al azar hasta
			 * conseguirlo
			 */
			boolean colocado = false;
			while (!colocado) {
				int posi = (int)(Math.random() * palabra.length());
				if (revuelta[posi] == null) { //Se puede colocar
					revuelta[posi] = palabra.charAt(i);
					colocado = true; //Esto pondrá fin al bucle
				}
			}
		}
 
		//Finalizado el bucle foro, los caracteres ya debería haberse colocado revueltos
		System.out.println("\nPalabra revuelta:");
		for (Character c: revuelta)
			System.out.print(c);
 
	}
 
}

En pantalla tenemos este resultado:

1
2
3
4
Introduzca palabra: dinosaurio
 
Palabra revuelta:
udosnroiai
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Rodrigo
Val: 1.063
Plata
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Como puedo hacer introducir una palabra y que me la revuelva

Publicado por Rodrigo (258 intervenciones) el 16/02/2020 16:40:00
Si no te importa usar librerias que hacen parcialmente el trabajo, puedes usar esta secuencia

1
2
3
List<String> letras = Arrays.asList(palabra.split(""));
Collections.shuffle(letras);
String revueltas = String.join("", letras);

Ver tambien: http://bit.ly/shuffleCharsInString
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar