Mezclar 2 datos tipo String.

Iniciado por Coke951, 18 Abril 2015, 07:25 AM

0 Miembros y 1 Visitante están viendo este tema.

Coke951

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:


Gracias de antemano.

Usuario Invitado

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.

Código (java) [Seleccionar]
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);
        }
    }
}
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

Coke951

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!