Bene, ora ho provato a aggiungere quella dicitura:
codice:
@SuppressWarnings({"unchecked"})
public class OttoQuindici implements Comparable<T>
{
public static void main(String []args)
{
String scelta=Input.readString("Scegli tra vettore String o numerico:(String/Int) ");
String[] box1= new String[]{"abaco","ancona","bingo","cozza","milano","musica","pollo"};
int[] box2=new int[]{2,4,5,6,11,12,34,54};
if(scelta=="String")
{
for(int i =0;i<box1.length;i++)
{
System.out.print(box1[i]+" ");
}
String[] c = new String[50];
String[] cerca = new String[50];
//T[] cerca= new Object[1];
cerca[0]="musica";
OttoQuindici<String> OttoQuindici = new OttoQuindici<String>();
c =OttoQuindici.binaria(box1, cerca, String.class);
}
else
{
for(int i =0;i<box2.length;i++)
{
System.out.print(box2[i]+" ");
}
}
}
public T[] binaria(T[] elementi, T[] ricerca,Class<T> clazz)
{
T[] risultato = (T[]) Array.newInstance(clazz, 50);
int inferiore=0;
int superiore=0;
int meta=0;
int i =0;
int trovato=0;
//T[] ricerca=new Object[1];
superiore=elementi.length;
do{
meta=(superiore+inferiore)/2;
if((superiore+inferiore)%2!=0)
{
meta=meta+1;
}
if(ricerca[0].compareTo(elementi[i])==0){
trovato=1;
risultato[0]=elementi[i];
}
if(ricerca[0].compareTo(elementi[i])<0&&trovato==0)
{
superiore=meta;
}else
{
inferiore=meta;
}
i=i+1;
}while(inferiore!=superiore||trovato!=1);
return risultato;
}
}
ma ora gli errori in compilazione sono 10 e non più due: sembra non trovare più T!!!
codice:
C:\Users\Roby492\Dropbox\java\CAP8>javac OttoQuindici.java
OttoQuindici.java:22: error: cannot find symbol
public class OttoQuindici implements Comparable<T>
^
symbol: class T
OttoQuindici.java:52: error: cannot find symbol
public T[] binaria(T[] elementi, T[] ricerca,Class<T> clazz)
^
symbol: class T
location: class OttoQuindici
OttoQuindici.java:52: error: cannot find symbol
public T[] binaria(T[] elementi, T[] ricerca,Class<T> clazz)
^
symbol: class T
location: class OttoQuindici
OttoQuindici.java:52: error: cannot find symbol
public T[] binaria(T[] elementi, T[] ricerca,Class<T> clazz)
^
symbol: class T
location: class OttoQuindici
OttoQuindici.java:52: error: cannot find symbol
public T[] binaria(T[] elementi, T[] ricerca,Class<T> clazz)
^
symbol: class T
location: class OttoQuindici
OttoQuindici.java:22: error: OttoQuindici is not abstract and does not override abstract method compareTo(T) in Comparab
le
public class OttoQuindici implements Comparable<T>
^
OttoQuindici.java:40: error: type OttoQuindici does not take parameters
OttoQuindici<String> OttoQuindici = new OttoQuindici<String>();
^
OttoQuindici.java:40: error: type OttoQuindici does not take parameters
OttoQuindici<String> OttoQuindici = new OttoQuindici<String>();
^
OttoQuindici.java:54: error: cannot find symbol
T[] risultato = (T[]) Array.newInstance(clazz, 50);
^
symbol: class T
location: class OttoQuindici
OttoQuindici.java:54: error: cannot find symbol
T[] risultato = (T[]) Array.newInstance(clazz, 50);
^
symbol: class T
location: class OttoQuindici
10 errors
Non mi sono chiare molte cose, come potete capire. Io devo ridefinire il funzionamento del metodo compareTo se implementato sui generici? E se si, come fare nel mio caso?
Grazie mille