Ciao a tutti/e,
ho fatto un esercizio in cui ho 3 classi:
- quella contenente il main
- una classe CD
- una classe PortaCD (contenente un vettore di CD).
Ho un problema col metodo "confronta" della classe PortaCD, che deve confrontare 2 oggetti di classe PortaCD e dire se contengono gli stessi cd oppure no.
L'errore mi viene segnalato nell'istruzione
if (!contenitore[i].equals(p[j]))
il compilatore dice
array required, PortaCD found
Non riesco a capire che problema c'è....
Classe CD:
package luca3;
public class CD {
// ATTRIBUTI
private String titolo;
private String autore;
private int numero_brani;
private int durata; // durata in minuti
// COSTRUTTORE PARAMETRICO
public CD(String titolo, String autore, int numero_brani, int durata) {
this.titolo = titolo;
this.autore = autore;
this.numero_brani = numero_brani;
this.durata = durata;
}
// COSTRUTTORE DI DEFAULT
public CD() {}
// GETTER E SETTER
public String getTitolo() { return titolo; }
public void setTitolo(String titolo) { this.titolo = titolo; }
public String getAutore() { return autore; }
public void setAutore(String autore) { this.autore = autore; }
public int getNumero_brani() { return numero_brani; }
public void setNumero_brani(int numero_brani) { this.numero_brani = numero_brani; }
public int getDurata() { return durata; }
public void setDurata(int durata) { this.durata = durata; }
public boolean equals(CD c){
if (titolo == c.titolo && autore == c.autore && numero_brani == c.numero_brani && durata == c.durata)
return true;
return false;
}
} // fine classe
Classe PortaCD:
package luca3;
import java.util.Scanner;
public class PortaCD {
Scanner tastiera = new Scanner(System.in);
CD [] contenitore = new CD[100];
int numeroCD;
int dimensioneContenitore;
// COSTRUTTORE
public PortaCD (int n){
for (int i = 0; i < n; i++)
contenitore[i] = new CD();
numeroCD = 0;
dimensioneContenitore = n;
}
// METODI
public void inserisciCD (String titolo, String autore, int numero_brani, int durata){
contenitore[numeroCD].setTitolo(titolo);
contenitore[numeroCD].setAutore(autore);
contenitore[numeroCD].setNumero_brani(numero_brani);
contenitore[numeroCD].setDurata(durata);
numeroCD++;
}
public CD getCD (int posizione){
return contenitore[posizione];
}
public void setCD (int posizione, CD cd){
contenitore[posizione] = cd;
}
public void killCD (int posizione){
contenitore[posizione] = null;
numeroCD--;
}
public int getN () {
return numeroCD;
}
public int cercaCDperTitolo (String titolo){
for (int i = 0; i < numeroCD; i++)
if (contenitore[i].getTitolo() == titolo)
return i;
return -1;
}
@Override
public String toString(){
String titoli = "";
for (int i = 0; i < numeroCD; i++)
titoli += contenitore[i].getTitolo() + " ";
return titoli;
}
public boolean confronta (PortaCD p){
if (this.numeroCD != p.numeroCD)
return false;
else{
// se i 2 vettori contengono lo stesso numero di oggetti
for (int i = 0; i < dimensioneContenitore; i++)
if (contenitore[i] != null)
for (int j = 0; j < dimensioneContenitore; j++)
if (!contenitore[i].equals(p[j])) //ERRORE!!!
return false;
return true;
}
}
} // fine classe