OneCompiler

Lab 2 edda Arreglos

122

import java.util.Random;

public class Lab2EddaArreglos { // ARREGLOS

public static class Song {
    private String nombre;
    private String artista;
    private String album;
    private int duracion;

    public Song(String n, String a, String al, int d) {
        nombre = n;
        artista = a;
        album = al;
        duracion = d;
    }
}

public static class Playlist {
    private String nombre;
    private Song[] cancionesA = new Song[1];
    int largo = 0;

    public void agregarCancionPlaylist_A(Song nueva) {
        if (largo == 0) {
            largo++;
            cancionesA[0] = nueva;
        } else {
            largo++;
            Song[] aux = new Song[(cancionesA.length + 1)];
            for (int i = 0; i < cancionesA.length; i++) {
                aux[i] = cancionesA[i];
            }
            aux[aux.length - 1] = nueva;
            cancionesA = aux;
        }
    }

    public void quitarCancionPlaylist_A(Song remove) {
        int aux = -1;
        for (int i = 0; i < cancionesA.length; i++) {
            if (cancionesA[i].equals(remove)) {
                aux = i;
                break;
            }
        }
        if (aux != -1) {
            Song[] aux2 = new Song[cancionesA.length - 1];
            int j = 0;
            for (int i = 0; i < cancionesA.length; i++) {
                if (i != aux) {
                    aux2[j] = cancionesA[i];
                    j++;
                }
            }
            cancionesA = aux2;
        }
    }

    // editar playlist con arreglo
    public void editarPlaylist_A(int h, int k) {
      h--;
      k--;
        Song aux = cancionesA[h];
        cancionesA[h] = cancionesA[k];
        cancionesA[k] = aux;
    }

    //imprimir con fines de prueba
    public void imprimir(){
        for (int i = 0; i < cancionesA.length; i++){
            System.out.println(cancionesA[i].nombre);
        }
    }
}

public static class Reproductor {
    private Playlist playlists = new Playlist();
    private Song[] cola_reproduccion_A = new Song[1];

    public void agregarCancionCola_A(Song nueva) {
        if (cola_reproduccion_A.length == 1) {
            cola_reproduccion_A[0] = nueva;
        } else {
            Song[] aux = new Song[(cola_reproduccion_A.length) + 1];
            for (int i = 0; i < cola_reproduccion_A.length; i++) {
                aux[i] = cola_reproduccion_A[i];
            }
            aux[cola_reproduccion_A.length] = nueva;
        }
    }

    public void quitarCancionCola_A(Song remove) {
        int index = 0;
        for (int i = 0; i < cola_reproduccion_A.length; i++) {
            if (cola_reproduccion_A[i] == remove) {
                index = i;
                break;
            }
        }
        Song[] aux2 = new Song[cola_reproduccion_A.length - 1];
        for (int i = 0; i < aux2.length; i++) {
            if (i == index) {
                aux2[i] = cola_reproduccion_A[i + 1];
            } else {
                aux2[i] = cola_reproduccion_A[i];
            }
        }
        cola_reproduccion_A = aux2;
    }

    public void reproducirAleatoriamente_A(Playlist play) {
        int aux = play.cancionesA.length;
        Random rand = new Random();
        while (aux > 0) {
            int random_number = rand.nextInt(aux);
            // considerar que imprimirla es reproducirla
            System.out.println(play.cancionesA[random_number].nombre);

            for (int i = random_number; i < aux - 1; i++) {
                play.cancionesA[i] = play.cancionesA[i + 1];
            }
            aux--;
        }
    }
}

public static void main(String[] args) {

    // Crear algunas canciones de ejemplo
    Song cancion1 = new Song("Cancion 1", "Artista 1", "Album 1", 180); // Duración en segundos
    Song cancion2 = new Song("Cancion 2", "Artista 2", "Album 2", 240);
    Song cancion3 = new Song("Cancion 3", "Artista 3", "Album 3", 200);
    Song cancion4 = new Song("Cancion 4", "Artista 4", "Album 4", 220);

    // Crear una lista de reproducción de ejemplo
    Playlist miPlaylist = new Playlist();
    miPlaylist.nombre = "Mi Lista de Reproducción";
    miPlaylist.agregarCancionPlaylist_A(cancion1);
    miPlaylist.agregarCancionPlaylist_A(cancion2);
    miPlaylist.agregarCancionPlaylist_A(cancion3);
    miPlaylist.agregarCancionPlaylist_A(cancion4);

    // Crear un reproductor
    Reproductor miReproductor = new Reproductor();

    // Agregar canciones a la cola de reproducción
    miReproductor.agregarCancionCola_A(cancion1);
    miReproductor.agregarCancionCola_A(cancion2);
    miReproductor.agregarCancionCola_A(cancion3);
    miReproductor.agregarCancionCola_A(cancion4);

    // Probar la reproducción aleatoria
    System.out.println("original");
    miPlaylist.imprimir();
    miPlaylist.editarPlaylist_A(2, 4);
    System.out.println("editada");
    miPlaylist.imprimir();
}

}