• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przykład programu z książki nie chce się skompilować.

Object Storage Arubacloud
0 głosów
379 wizyt
pytanie zadane 30 lipca 2016 w Java przez mamamia123 Nowicjusz (220 p.)
edycja 30 lipca 2016 przez Patrycjerz

Witam. Podczas nauki Javy z książki Head First Java napotkałem problem. A mianowicie kod programu jest napisany słowo w słowo jak w książce, a niestety program nie chce się skompilować. Liczę na waszą pomoc.

class Film
{
    String tytul;
    String rodzaj;
    int ocena;
 
    void odtworz()
    {
        System.out.println("Odtwarzamy film");
    }
}
 
public class FilmTester
{
    public static void main(String[] args)
    {
    Film pierwszy = new Film();
    pierwszy.tytul = "Przeminęło z hossą";
    pierwszy.rodzaj = "Tragedia";
    pierwszy.ocena = -2 ;
    Film drugi = new Film();
    drugi.tytul = "Matrix dla suchwałych";
    drugi.rodzaj = "Komedia";
    drugi.ocena = 5;
    Film trzeci = new Film();
    trzeci.tytul = " Byte club";
    trzeci.rodzaj = " Tragedia";
    trzeci.ocena = 127;
 
    }
}

Warto zaznaczyć że w Eclipsie wyskakuje przy public class FilmTester taki komunikat : "the public type FilmTester must be defined in its own file"
Pomożecie rozwiązać problem , bo dopiero zaczynam przygodę z Javą , a wydawałoby się, że przykład z książki powinien działać bez najmniejszych problemów.

komentarz 30 lipca 2016 przez Grzyboo Nałogowiec (28,860 p.)
Plik, w którym znajduje się klasa publiczna musi nazywać się tak samo jak ta klasa, czyli FilmTester.java

3 odpowiedzi

0 głosów
odpowiedź 30 lipca 2016 przez Everviv Użytkownik (700 p.)
Spróbuj klasę Film zrobić w oddzielnym pliku
komentarz 30 lipca 2016 przez mamamia123 Nowicjusz (220 p.)
tak też próbowałem zrobić zgodnie z zaleceniami Eclipse jednak nic nie pomaga. Chyba że te pliki mam ze sobą jakoś połączyć, żeby wiedzialy że tworzą wspólną całość Niestety do tego jeszcze nie doszedłem...
0 głosów
odpowiedź 30 lipca 2016 przez Bartłomiej Mirek Bywalec (2,290 p.)
edycja 30 lipca 2016 przez Bartłomiej Mirek
Spróbuj usunąć polskie znaki z Stringów i usunąć modyfikator public z klasy FilmTester.

Po za tym Twój kod się dobrze kompiluje :d (przynajmniej u mnie)
komentarz 30 lipca 2016 przez mamamia123 Nowicjusz (220 p.)
edycja 30 lipca 2016 przez mamamia123
u mnie w programie Eclipse po pewnych przemianach zaczął się kompilować ale wgl nie wyświetla nic w konsoli. Czy mógłbyś mi wysłać dla pewności jak Twój zmieniony kod wygląda? :)
PS: Wybacz nie zrozumiałem żee kod się kompiluje dobrze u Cb nawet bez przemian. A w czym go kompilujesz ?
komentarz 30 lipca 2016 przez Bartłomiej Mirek Bywalec (2,290 p.)

Oczywiście, że nic Ci się nie będzie wyświetlać w konsoli, ponieważ ty tylko przypisujesz wartości do składowych obiektów. Nigdzie nie wywołujesz funkcji odtworz().

Żeby wyświetliło Ci się coś w konsoli musisz np. na koniec dodać 

pierwszy.odtworz();

I obydwoje kompilujemy w tym samym, bo kompilacją zajmuje się JVM ;)

komentarz 30 lipca 2016 przez Bartłomiej Mirek Bywalec (2,290 p.)

A mój kod wygląda tak

class Film {
  String tytul;
  String rodzaj;
  int ocena;
  
  void odtworz() {
    System.out.println("Odtwarzamy film");
  }
}
  
class FilmTester {
  
  public static void main(String[] args) {
    
    Film pierwszy = new Film();
    pierwszy.tytul = "Przeminelo z hossa";
    pierwszy.rodzaj = "Tragedia";
    pierwszy.ocena = -2 ;
      
    Film drugi = new Film();
    drugi.tytul = "Matrix dla zuchwalych";
    drugi.rodzaj = "Komedia";
    drugi.ocena = 5;
      
    Film trzeci = new Film();
    trzeci.tytul = "Byte club";
    trzeci.rodzaj = "Tragedia";
    trzeci.ocena = 127;
      
    pierwszy.odtworz();
    }
}

 

0 głosów
odpowiedź 30 lipca 2016 przez MichuDev Pasjonat (20,300 p.)
W języku Java nazwa pliku jest bardzo ważna np. jeśli klasa nazywa się Film to plik z klasą nazywa się Film.java. Można tworzyć zagnieżdżenia (klasę w klasie). Oczywiście zamiast klasy w klasie może być to typ wyliczeniowy,interfejs lub adnotacja i zagnieżdżenia mogą być wielopoziomowe.

Poza tym katalog też ma znaczenie, jeśli zdefiniujemy pakiet a.b.c to każdy plik w pakiecie musi być w folderze a/b/c względem folderu z kodem źródłowym (przy plikach skompilowanych .class jest tak samo).

Pamiętaj by skompilować 2 pliki.

Podobne pytania

+1 głos
1 odpowiedź 130 wizyt
0 głosów
1 odpowiedź 368 wizyt
pytanie zadane 9 grudnia 2015 w Java przez Ramsfeld Nowicjusz (200 p.)
0 głosów
4 odpowiedzi 5,306 wizyt
pytanie zadane 27 października 2016 w Systemy operacyjne, programy przez Lotoos Początkujący (260 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...