Skocz do zawartości

Blad Podczas Kompilacji Prostego Programu


kakiet

Rekomendowane odpowiedzi

Napisalem sobie prosty programik w javie:

public class Test3
{  
   public static void main(String[] args)
   {  
         //tworze obsluge wskazujaca na objekt kalsy Pracownik
      Pracownik[] obsluga=new Pracownik[2];
      //wypelniam tablice imieniem pracownika oraz jego pensja
      obsluga[1]= new Pracownik("Piotrek", 2000);
      obsluga[2]= new Pracownik("Zbyszek", 2500);
      
         //drukuje informacje o pracownikach
      for(int i=0; i< obsluga.length; i++)
      {
       Pracownik p = obsluga[i];
       System.out.println("Nazwisko"+p.Nazwisko()+"pensja"+p.Pensja());
       
      }
      
   }
}
//tworze kalse pracownik
class Pracownik
{
//konstruktor
 public Pracownik(String n, double p)
 {
  nazwisko=n;
  pensja=p;
 }
 
//metoda wyrzucajaca wartosc pensji
 public double Pensja()
 {
  return pensja;
 }
//metoda wyrzucajaca wartosc nazwiska pracownika
 public String Nazwisko()
 {
  return nazwisko;
 
 }
 private String nazwisko;
 private double pensja;
}

 

Jako ze go juz napisalem wic chce go uuchomic. A tu mi wyskakuje cos takiego:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at Test3.main(Test3.java:8)

 

O co chodzi? Moze mi ktos pomoc....

 

Wiem ze to lamerskie pytanie. ale blagam o jaks podpowiedz...............................

Odnośnik do komentarza
Udostępnij na innych stronach

Witaj,

 

po prostu starasz się zapisać poza tablice.

"

//tworze obsluge wskazujaca na objekt kalsy Pracownik

Pracownik[] obsluga=new Pracownik[2];

//wypelniam tablice imieniem pracownika oraz jego pensja

obsluga[1]= new Pracownik("Piotrek", 2000);

obsluga[2]= new Pracownik("Zbyszek", 2500);

"

 

elementy tablicy indeksuje się od 0, ten fragment po poprawkach powinien wyglądać tak:

"

//tworze obsluge wskazujaca na objekt kalsy Pracownik

Pracownik[] obsluga=new Pracownik[2];

//wypelniam tablice imieniem pracownika oraz jego pensja

obsluga[0]= new Pracownik("Piotrek", 2000);

obsluga[1]= new Pracownik("Zbyszek", 2500);

"

 

Pozdrawiam.

 

Odnośnik do komentarza
Udostępnij na innych stronach

O co chodzi? Moze mi ktos pomoc....

Jeśli definiujesz tablice o n elementach to indeksy tej tablicy wynosza od 0 do n-1.

Czyli w twoim przypadku przy definicji Pracownik[] obsluga=new Pracownik[2]; tablica ta ma dwa elementy o indeksach 0 i 1:

Pracownik[0]

Pracownik[1]

indeks 2 NIE wskazuje juz na obszar pamieci przydzielonej tablicy (obiektowi) typu Pracownik i stad blad. To tak jako rozszerzenie/wyjasnienie wypowiedziprzedmowcy.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli zaczynasz z Javą to dodam tylko, że bardzo pomocna jest stronka http://java.sun.com/j2se/1.4.2/docs/api/ gdzie masz spisane wszystkie klasy Javy wraz z wszystkim co o tych klasach trzeba wiedzieć.

A tu jest tutorial do swinga (czyli grafiki w Javie):

http://java.sun.com/docs/books/tutorial/uiswing/

Mam nadzieję, że się przyda smile.gif

Pozdrawiam!

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...