Ciao a tutti,
ho un problema con il metodo "public int compareTo(Object o)".
riporto qui sotto il mio codice
------------------------------------
import java.text.*;
import java.util.*;
import java.lang.*;
import java.io.*;
public class Song implements Comparable
{
private String title;//variabile d'istanza contiene il titolo del brano
private String artist;//variabile d'istanza contiene l'artista che ha intepretato il brano
private String album;//variabile d'istanza contiene l'album da cui e' tratto il brano
private int track;//variabile d'istanza contiene posizione del brano all'interno del cd
private int year;//variabile d'istanza contiene l'anno di pubblicazione da cui e' tratto il brano
private String genre;//variabile d'istanza contiene il riferimento al genere
public Song(String a, String t, String l, int y, int n, String g)//COSTRUTTORE che intrepreta i parametri come le informazioni caratterizzanti di un brano
{
this.artist=a;
this.title=t;
this.album=l;
this.year=y;
this.track=n;
this.genre=g;
}
//METODI get
public String getTitle()
{
return title;
}
public String getArtist()
{
return artist;
}
public String getAlbum()
{
return album;
}
public int getTrack()
{
return track;
}
public int getYear()
{
return year;
}
public String getGenre()
{
return genre;
}
//METODI set;
public void setTitle(String t)
{
title=t;
}
public void setArtist(String a)
{
artist=a;
}
public void setAlbum(String l)
{
album=l;
}
public void setTrack(int n)
{
track=n;
}
public void setYear(int y)
{
year=y;
}
public void setGenre(String g)
{
genre=g;
}
public String toString()
{
return artist + "|" + title + "|" + album + "|" + Integer.toString(year) + "|" + Integer.toString(track) + "|" + genre ;
}
public int compareTo(Object o)
{
Song a = (Song)o;
return this.compareTo(a);
}
public int compareTo(Song a)
{
if((this.artist.compareTo(a.artist))+(this.title.c ompareTo(a.title))+(this.album.compareTo(a.album)) +(this.track.compareTo(a.track))==0)
{
return 0;
}else{
if((this.artist.compareTo(a.artist))+(this.title.c ompareTo(a.title))+(this.album.compareTo(a.album)) +(this.track.compareTo(a.track))<0)
{
return 1;
}
else{
return -1;
}
}
}
}
-----------------------------------------------------
Il problema sta nella riga in cui faccio il compareTo di tre 3 stringhe(titolo album artista) piu' un int (track), ed e proprio quest'ultimo che mi genera un errore del tipo:
"int cannont be dereferenced "
1-ERROR-if((this.artist.compareTo(a.artist))+(this.title.c ompareTo(a.title))+(this.album.compareTo(a.album)) +(this.track.compareTo(a.track))==0)
2-ERROR-if((this.artist.compareTo(a.artist))+(this.title.c ompareTo(a.title))+(this.album.compareTo(a.album)) +(this.track.compareTo(a.track))<0)
Ne ho provate un po' di tutti i colori, cercando di castare il tipo primitivo (int track)ad Integer ma continuo a sbagliare, e non riesco a trovare una soluzione .
Spero che qualcuno riesca ad illuminarmi.
Saluti P.![]()
![]()