Problem przy uruchamianiu, Exception in thread "main"

Odpowiedz Nowy wątek
2011-10-13 14:29
0

Czesc.

Napisalem heapsorta w javie, jendak po przejsciu procesu kompilacji nie moge uruchomic programu. Wywala mi komunikat:

Exception in thread "main" java.lang.NoSuchMethodError: main

import java.io.*;
public class imp
{
   private static int[] tab={1,3,9,8,2,4};
   private static int n;
/*   int[] tab={1,3,4,2,8,9};*/

   public static void sortuj(int[] tab)
   {
   /* sortowanie poczawszy od pierw elementu tablicu */
   /*tab=tab[0]; */
   n=tab.length; /* wyznaczenie dlugosci tablicy <potrzebne do fora */
   heapsort();
   drukuj();
   }

   private static void heapsort()
   {
   budujdrzewo();
   while (n>1)
   {
      wymiana(0, n);
      oddolu(0);
      n--;
   }
   }

   private static void budujdrzewo()
   {
   for(int i=(n/2)-1; i>1; i--) /* sprawdza warunek dla danego wierzcholka<korzenia drzewa */
   oddolu(i);
   }

   private static void oddolu(int i)
   {
   int w=2*i+1;    /* pierwszy lisc od dolu */
   while (w<n)
   {
      if(w+1<n) /* jezeli jest mniejszy lisc */
         if(tab[w+1]>tab[w]) w++; /* jezeli jest on najwiekszym synem */
      if(tab[i]>=tab[w])
         return; /* jak jest ok to koniec, przekaze argument do fkcji budujdrzewo, a jak nie: */
      wymiana(i,w);
         }
   }
   private static void wymiana(int a, int b){
      int t=tab[a];
      tab[a]=tab[b];
      tab[b]=t;
   }

   private static void drukuj()
   {
   System.out.println("Uporzadkowana tablica:");
   n=tab.length;
   for(int g=0; g<n; g++){
      System.out.printf(""+tab[g]);
   }
   }
}

Pozostało 580 znaków

2011-10-13 14:35
0

A co wg Ciebie powinno się uruchomić, skoro w klasie nie ma metody "main"? ; )

edytowany 1x, ostatnio: krupnick, 2011-10-13 14:35

Pozostało 580 znaków

2011-10-13 14:57
0

No oczywiscie, tak to jest jak sie w javie pisze drugi dzien. Oczywiscie sortuj ma byc mainem.
Jednak wtedy nie wiem jak podac tablice tab do niego, pozniej algorytm w heapsort znowu korzysta z main(). Jednak dostalem komunikat, iz nie moze byc samo main().

imp.java:19: main(int) in imp cannot be applied to ()
main();

Oraz na starcie programu chcialem przypisac w main tab=tab[0], jednak dostalem komunikat:

imp.java:11: array required, but int found
tab=tab[0];

Pozostało 580 znaków

2011-10-13 15:00
1
  1. Sygnatura main w Javie to nie żadne main(int), tylko public static void main(String[]).
  2. To chyba oczywiste, że do typu tablicowego nie możesz przypisać inta.
edytowany 1x, ostatnio: iooi, 2011-10-13 15:00

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0