es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo mezclar los caracteres de diferentes cadenas dentro de un arreglo?

Estoy tratando de leer un archivo CSV y luego mezclar los caracteres de las cadenas en el array. El archivo CSV contiene un diccionario de inglés a alemán. Así es como se ve:

comer,essen

jugar,spiel

dormir,schlafen

La salida deseada debería verse así:

comer sesen

jugar lpsie

dormir fenlahsc

Este es mi código hasta ahora (sigo obteniendo el error “el método no estático shuffle (String) no se puede referenciar desde un contexto estático”):

public class Shuffle {
public static void main(String[] args) {
String path = “/Users/SaberKlai/Documents/vokabeln.csv”;
String line = “”;

    try {
        BufferedReader br = new BufferedReader(new FileReader(path));

        Shuffle s = new Shuffle();

        while ((line = br.readLine()) != null) {


            String[] values = line.split(",");               
            System.out.println(values[0] + " " + shuffle(values[1]));
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public void shuffle(String input){
    List<character> characters = new ArrayList<character>();
    for(char c:input.toCharArray()){
        characters.add(c);
    }
    StringBuilder output = new StringBuilder(input.length());
    while(characters.size()!=0){
        int randPicker = (int)(Math.random()*characters.size());
        output.append(characters.remove(randPicker));
    }
    System.out.println(output.toString());
}

}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el error “no se puede hacer referencia al método no estático shuffle (String) desde un contexto estático”, debes hacer que tu método shuffle sea estático. Aquí está el código actualizado:

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class Shuffle {
        public static void main(String[] args) {
            String path = "/Users/SaberKlai/Documents/vokabeln.csv";
            String line = "";
    
            try {
                BufferedReader br = new BufferedReader(new FileReader(path));
                while ((line = br.readLine()) != null) {
                    String[] values = line.split(",");
                    System.out.println(values[0] + " " + shuffle(values[1]));
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static String shuffle(String input){
            List<character> characters = new ArrayList<character>();
            for(char c:input.toCharArray()){
                characters.add(c);
            }
            StringBuilder output = new StringBuilder(input.length());
            while(characters.size()!=0){
                int randPicker = (int)(Math.random()*characters.size());
                output.append(characters.remove(randPicker));
            }
            return output.toString();
        }
    }
    

    También realizamos un par de cambios en el código:

    • Importamos java.util.Random para generar números aleatorios.
    • Cambiamos el tipo de retorno del método shuffle de void a String, para que pueda devolver la cadena aleatoria en lugar de simplemente imprimirla.
    • Eliminamos la instancia innecesaria del objeto Shuffle.

Comments are closed.