Que tal, me estaba preguntando como hacer una mezcla de un string que contiene letras y otro string que contiene numeros de forma aleatoria.
Lo hice de esta forma, pero se me hace muy complicada y no funciona del todo bien.
Se que existen muchas formas de hacer esto, me gustaria saber si alguien ya lo ha hecho antes y encontro alguna forma simple o minimo que funcione del todo.
import java.util.Scanner;
import java.util.Random;
class Mezclador{
//variables instancia
private String letras;
private String numeros;
public Mezclador(String letras, String numeros){
establecerLetrasYNumeros(letras, numeros);
}
public void establecerLetrasYNumeros(String let, String num){
letras = let;
numeros = num;
}
public String obtenerMix(){
String mixed = "";
StringBuffer mix = new StringBuffer(letras);
Random random = new Random();
int numRandom = random.nextInt(numeros.length());
int varNum = 0;
int varLet = 0;
for(int x = 0; x < 2 ; x++){
varNum = random.nextInt(numeros.length());
varLet = random.nextInt(letras.length());
mixed += mix.insert(varLet, numeros.charAt(varNum));
}
return mixed;
}
}
Prueba de Escritorio:
(http://img1.imagilive.com/0415/cap887.png)
Gracias de antemano.
Crea un List<String> y agrégale 2 arrays: las letras ingresadas y los números ingresados. Ingresa los números y letras separados por espacios y aplica el método split(" ") para obtener un array de las letras. Lo mismo para los números.
Luego, convierte esos arrays a List con Arrays.asList y, finalmente aplica el método shuffle para mezclarlos. Importante, pasar como segundo parámetro una semilla, para que todas las veces mezcle la lista diferente.
import java.util.Random;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public void insertLists(List<String> parent, List<String>... lists) {
for(List<String> current : lists) {
parent.addAll(current);
}
}
public void suffle(List<String> list) {
Collections.shuffle(list, new Random(System.nanoTime()));
}
public static void main(String[] args) {
Main main = new Main();
List<String> mix = new ArrayList<>();
try {
final Scanner reader = new Scanner(System.in);
System.out.println("Ingrese las letras separadas por espacios");
String[] letters = reader.nextLine().split(" ");
System.out.println("Ingrese los números separados por espacios");
String[] numbers = reader.nextLine().split(" ");
main.insertLists(mix, Arrays.asList(letters), Arrays.asList(numbers));
main.suffle(mix);
} catch(Exception e) {
System.out.println("Ha ocurrido un error. Vea el rastreo de pila");
e.printStackTrace();
System.exit(-1);
}
for(String digit : mix) {
System.out.print(digit);
}
}
}
Perfecto, nunca habia tocado lo de List y Array List, en mi clase de POO nunca lo he visto, investigare mas pero tu codigo funciona de maravilla y se como modificarlo para lo que necesito.
Muchas Gracias Gus Garsaky!