0
I can’t add class Video
within the vector.
public class SongDriver {
public static void main(String[] args) {
Playlist lista = new Playlist();
Musica num1 =new Musica("Agua de beber","Antonio Carlos Jobim","Astrud Gilberto", 140);
Musica num2 =new Musica("O mar serenou","Candeia"," Clara Nunes", 179);
Musica num3 =new Musica("Rapaz Folgado","Noel Rosa"," Martinho da Vila Mart'nália",180);
Video num4 = new Video("Musica"," Despacito", " Luis Fonsi",5926796,280);
lista.add(num1);
lista.add(num2);
lista.add(num3);
lista.add(num4);
lista.print();
}
public static class Playlist{
private Musica []musicas;
private int cont;
public Playlist(){
musicas = new Musica[1000];
cont = 0;
}
public void add(Musica a){
if(cont==musicas.length){
System.out.println("ERROR: playlist atingiu sua quantidade máxima de itens.");
}
musicas[cont]= a;
cont++;
}
public void add(Video b){
if(cont==musicas.length){
System.out.println("ERROR: playlist atingiu sua quantidade máxima de itens.");
}
musicas[cont]= b;
cont++;
}
public Musica get(int i){
if(cont> i){
return musicas[i];
} else {
return null;
}
}
public void print(){
String result="Total de Musicas e Videos Alocados = "+cont+"\n";
for(int i =0; i <cont; i++){
result+=( i +" => "+musicas[i]+"\n");
}
result+="Tempo Total da PlayList: "+formatoTotalTempo();
System.out.println(result.toString());
}
public int totalTempo(){
int totalTempo=0;
for(int i =0; i <cont; i++){
totalTempo+=musicas[i].getDuracao();
}
return totalTempo;
}
public String formatoTotalTempo(){
return formatoTempo(totalTempo());
}
}
public static class Musica{
public String nome;
public String interprete;
public String compositor;
public int duracao;
public Musica(String musicaNome,String interprteNome,String compositorNome,int tamanhoDuracao){
this.nome=musicaNome;
this.interprete=interprteNome;
this.compositor=compositorNome;
this.duracao=tamanhoDuracao;
}
public void setNome(String musicaNome){
nome=musicaNome;
}
public String getNome(){
return nome;
}
public void setInterprte(String interpreteNome){
interprete=interpreteNome;
}
public String getInterprete(){
return interprete;
}
public void setCompositor(String compositorNome){
compositor=compositorNome;
}
public String getCompositor(){
return compositor;
}
public void setDuracao(int tamanhoDuracao){
duracao = tamanhoDuracao;
}
public int getDuracao(){
return duracao;
}
public String toString(){
return"Nome: "+getNome()+", Interprete:"+getInterprete()
+", Compositor:"+getCompositor()+", Duracao: "+formatoTempo(getDuracao());
}
}
public static class Video{
String titulo;
String assunto;
String canal;
int visualizacoes;
long duracao_video;
public Video(String tituloNome,String assuntoNome,String canalNome,int visualizacoes_video, long tempo_video){
this.titulo = tituloNome;
this.assunto = assuntoNome;
this.canal = canalNome;
this.visualizacoes = visualizacoes_video;
this.duracao_video= tempo_video;
}
public void setTitulo(String tituloNome){
titulo = tituloNome;
}
public String getTitulo(){
return titulo;
}
public void setAssunto(String assuntoNome){
assunto = assuntoNome;
}
public String getAssunto(){
return assunto;
}
public void setCanal(String canalNome){
canal = canalNome;
}
public String getCanal(){
return canal;
}
public void setVisualizacoes(int visualizacoes_video) {
visualizacoes = visualizacoes_video;
}
public int getVisualizacoes() {
return visualizacoes;
}
public void setDuracao_video(long tempo_video) {
duracao_video = tempo_video;
}
public long getDuracao_video() {
return duracao_video;
}
public String toString(){
return"Titulo: "+getTitulo()+", Assunto:"+getAssunto()+", Canal:"+getCanal()+
", Visualizações: "+getVisualizacoes()+" Duração do video:"+formatoTempo(getDuracao_video());
}
}
public static String formatoTempo(long tempo){
int hora = 60;
int minuto = 60;
long h= tempo /hora;
long m= tempo % minuto;
return String.format("%02dh %02dmin", h, m);
}
}
It won’t work because you’re trying to add one
Video
in an array ofMusica
. Since the two classes have no relation to each other, their types are incompatible and it is not possible to place one in an array that only has the other. Create another array just forVideo
(actually, there are other solutions, like refactoring classes, creating an interfacePlayable
, for example, for any type of "touchable" media, etc). But for now, having another array should suffice...– hkotsubo
Hkotsubo, how do I create a Generic vector for both music and video classes.
– Bruno