Je rencontre des problèmes pour essayer de transmettre un objet Integer d'une classe de pilote en tant qu'argument pour la fonction d'une classe Generated SortedArray que j'ai créée. À partir de ma classe de pilote, je convertis l'entrée int de l'utilisateur en un objet Integer à convertir sur Comparable de ma classe SortedArray.Java: Integer obj ne peut pas convertir en objet comparable
Je continue de recevoir l'erreur: "Exception dans le thread" principal "java.lang.ClassCastException: java.lang.Integer ne peut pas être converti en comparable". J'ai jeté un coup d'œil à certains codes source de mes camarades de classe pour trouver peu de différence dans la définition des arguments/paramètres, mais ils ont tout de même un bon fonctionnement de leur code. J'ai cherché des heures à essayer de trouver quelle erreur j'ai faite et je n'arrive toujours pas à trouver pourquoi mon objet Integer ne peut pas être converti en Comparable.
est ici un peu de ma classe SortedArray
public class SortedArray implements Comparable{
public int size;
public int increment;
public int top;
Comparable[] a = new Comparable [size];
public SortedArray(int initialSize, int incrementAmount)
{
top = -1;
size = initialSize;
increment = incrementAmount;
}
public int appropriatePosition(Comparable value)
{
int hold = 0;
if(top == -1)
{
return 0;
}
else
{
for(int i = 0; i <= top; i++)
{
if(a[i].compareTo(value) > 0)
{
hold = i;
break;
}
}
}
return hold;
}
public void insert(Comparable value) //The function that my driver class needs to access
{
//Shifting numbers to the top
if(full() == true)
{
Comparable[] tempArray = new Comparable[top + increment];
for(int i= 0; i< size; i++)
{
tempArray[i]= a[i];
a = tempArray;
}
size = top + increment;
}
if(a[appropriatePosition(value) + 1] != null)
{
for(int i = top; i < appropriatePosition(value); i--)
{
a[i + 1] = a[i];
}
}
a[appropriatePosition(value) + 1]= value;
}
Voici le code de ma classe de pilote qui passe entier objet insertObj comme argument pour la fonction d'insertion de SortedArray.
public class IntDriver {
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
//Creating variables
int data;
boolean check = false;
int choice;
int size = 5;
int increment = 3;
SortedArray b = new SortedArray(size, increment);
//Creating Menu
while(check == false)
{
System.out.println("Please choose through options 1-6.");
System.out.println("1. Insert\n2. Delete\n3. Clear\n4. Smallest\n5. Largest\n6. Exit");
choice = keyboard.nextInt();
switch(choice)
{
case 1:
System.out.println("Type the int data to store in array location.");
data = keyboard.nextInt();
Integer insertObj = new Integer(data);
b.insert(insertObj);// Here's where I lay "insertObj" as an argument for the SortedArray function.
System.out.println("The value " + data + " is inserted");
break;
Vous pouvez essayer d'ajouter votre trace de pile d'exception complète ici. –
Dans le code que vous avez posté, il n'y a rien casted. Pourriez-vous poster un SSCCE qui montre le comportement que vous décrivez? http://sscce.org –