Java De methode is niet gedefinieerd voor dit type

Ik heb een probleem met het aanroepen van een methode die zich in een andere klasse bevindt. Deze mainmethode zit in een klasse op zich genaamd Lab14, en de heapSort()methode zit in een andere klasse genaamd heapSort. Beide klassen zitten in het standaardpakket. Ik krijg de foutmelding “De methode heapSort(Vector) is niet gedefinieerd voor het type Lab14” en ik begrijp niet waarom, help alstublieft.

Hieronder staat de hoofdmethode in de klas van lab 14

public static void main(String args[]) {
    Heap myheap = new Heap();
    Vector<StudentGPA> vec = new Vector();
    int []  br = new int[20]; 
    double []  dr = new double[20]; 
    int i = 0;
    int j = 0;
    try {
    //String inputLine; //stores each line from the file
    Scanner scanLine;
    Scanner input = new Scanner(new File("students.in"));
    while (input.hasNextLine()){
    scanLine = new Scanner(input.nextLine());
    int id = scanLine.nextInt();
    //br[i] = id;
    String name = scanLine.next();
    double gpa = scanLine.nextDouble();
    //dr[i]= gpa;
    //myStr.add(name);
    if(scanLine.hasNext())
    {
         String advisor = scanLine.next();
         GraduateStudentGPA grad = new GraduateStudentGPA(id,name,gpa,advisor);
         vec.add(grad);
    }
    else
    {
        StudentGPA reg = new StudentGPA(id,name,gpa);
        vec.add(reg);
    }
    i++;
    j++;
    }
    input.close();
} 
catch (IOException e) {
    System.out.println("IOException in reading input file!!!"+e);
}   
heapSort(vec);
}

Hieronder staat de code voor de HeapSort-klasse

public class HeapSort <E extends Comparable<? super E>>{
/** sorts the input vector using heap Sort <ul> <li> iterates
 * through each element of the input vector and inserts each
 * element to the heap by calling {\tt heapInsert}.  <li> deletes
 * each of the inserted items by calling {\tt heapDelete} the
 * appropriate number of times, and fills up the vector with the
 * returned elements.  </ul> If you are using the
 * minheap implementation, this insertion and deletion of all
 * items will produce a list of items sorted by their key
 * attribute values.
 * @param vec input vector
 */
public void heapSort(Vector<StudentGPA> vec){
    //  --  TO COMPLETE  --
    Heap myheap = new Heap<E>();
    for(int i = 0; i <vec.size(); i++)
    {
        myheap.heapInsert(vec.elementAt(i));
    }
    for(int i = 0; i <vec.size(); i++)
    {
        vec.setElementAt((StudentGPA) myheap.heapDelete(), i);
    }
}
}

Antwoord 1

U gaf het antwoord:

je probeert de heapSortmethode aan te roepen vanuit de Lab14klasse, maar de heapSortmethode is gedefinieerd op een andere klasse. De compilatiefout moet op deze regel staan.-

heapSort(vec);

U moet een HeapSort-object instantiëren en vervolgens de methode heapSortals volgt aanroepen.-

HeapSort myHeapSortObject = new HeapSort();
myHeapSortObject.heapSort(vec);

Antwoord 2

Uw heapsort-methode kan statisch worden verklaard, tenminste in de huidige staat

public static <E extends Comparable<? super E>> void heapSort(Vector<StudentGPA> vec) {

Je kunt het dan als volgt openen in je hoofdmethode

HeapSort.heapSort(vec);

Antwoord 3

Je moet ofwel:

1) maak de heapSort-methode openbaar statisch… en roep deze op als HeapSort.heapSort(vec)

of
2) Roep de methode op als nieuw HeapSort().heapSort(vec)


Antwoord 4

Je hebt hier verschillende problemen.

  1. Je roept heapSort(vec);aan vanuit de statische mainvan klasse Lab14. Dit zou betekenen dat de compiler een methode verwacht die overeenkomt met de handtekening static void heapSort(Vector<StudentGPA> vec)binnen de klasse Lab14. Aan jou hoe je dat oplost.
  2. Wijzig Vector<StudentGPA> vec = new Vector();in Vector<StudentGPA> vec = new Vector<>();. Merk op dat toevoeging van de hoekige haken <>.
  3. Er zijn eigenlijk nog veel meer problemen, mogelijk omdat het nog een onvoltooid werk is. Waarschijnlijk moet ik me concentreren op je oorspronkelijke vraag, waarvoor 1./ het antwoord is.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes