Błąd w kodzie JAVA

0

Witam,
Po miesiącu przerwy od studiów, zacząłem w własnym zakresie uczyć się Javy kupiłem sobie książkę, dziś gdy przepisałem jeden z programów się w niej znajdujących nieustanie mam błąd w jednej z linijek, mam nadzieje, że ktoś z was mi wytłumaczy o co tu chodzi i prosiłbym bez hejtowania nawet gdy będzie to największa pierdoła gdyż dopiero się uczę.

import java.util.*;


public class ManagerTest 
{
   public static void main(String[] args)
   {
	   // Tworzenie obiektu klasy manager
	   Manager boss = new Manager("Karol Parol" , 80000, 1987 , 12 , 15); // TUTAJ JEST BŁĄD
	   boss.setBonus(5000);
	   
	   Employee[] staff = new Employee[3];
	   // Wyświetlanie obiektów klas Manager i Employee do tablicy staff
	   
	   staff[0] = boss;
	   staff[1] = new Employee("Henryk Kwiatek", 50000, 1989 , 10 ,1);
	   staff[2] = new Employee("Artur Kwiatkowski", 40000, 1990, 3 ,15);
	   
	   //Wświetlanie informacji o wszystkic obiektach klasy Employee
	   for (Employee e : staff)
		   System.out.println("name=" + e.getName() + ".salary=" + e.getSalary());
	     
   }
	
class Employee 
{
 public Employee(String n, double s, int year, int month, int day)
 {
	name = n;
	salary = s;
	GregorianCalendar calendar = new GregorianCalendar(year, month - 1 , day);
	
	
 }
public String getName()
{
  return name;	

}
public double getSalary()
{
 return salary;	

}
public Date getHireDay()
{
 return hireDay;	

}
public void raseSalary(double byPercent)
{
  double raise = salary * byPercent / 100;
  salary += raise;


}

private String name;
private double salary;
private Date hireDay;



}
	
class Manager extends Employee
{

	public Manager(String n, double s, int year, int month, int day) 
	{
		super(n, s, year, month, day);
		bonus = 0;
	}
	
	public double getSalary()
	{
		double baseSalary = super.getSalary();
		return baseSalary = bonus;
		
	}

	public void setBonus(double b)
	{
		bonus = b;
	
	}
	
	private double bonus;

}


}

1

przed klasą Manager i Employee daj

static

, nie pytaj się dlaczego.

0

Dziękuje.
Jak mam nie pytać to nie pytam :D :D

2

Dobra w sumie mam dobry dzień.

To co zrobiłeś na początku to klasa wewnętrzna, której instancja nie może istnieć bez instancji klasy zewnętrznej, czyli żeby to co miałeś na samym początku działało, musiał być stworzyć instancję w nstępujący sposób:

            ManagerTest main = new ManagerTest();

            Manager boss = main.new Manager("Karol Parol" , 80000, 1987 , 12 , 15); // 

            boss.setBonus(5000);

            Employee[] staff = new Employee[3];
            // Wyświetlanie obiektów klas Manager i Employee do tablicy staff

            staff[0] = boss;
            staff[1] = main.new Employee("Henryk Kwiatek", 50000, 1989 , 10 ,1);
            staff[2] = main.new Employee("Artur Kwiatkowski", 40000, 1990, 3 ,15);

Dodając słowo

static

mówisz że klasa wewnątrz może istnieć bez tej zewnętrznej.
Ale to co zrobiłeś nie ma sensu, nie rób klas wewnątrz klas... bo będziesz miał same problemy, tak jak teraz.

https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

0

Dziękuje Ci za odpowiedź, tak jak pisałem to jest kod słowo w słowo z książki tym bardziej byłem w szoku, że nie działa i jeszcze teraz Ty dodajesz żeby czegoś takiego nie robić bo to nie ma sensu :D Więc w sumie widzę,że dobre podstawy wyciągnę z tej książki... a jest to "Java podstawy" Cay S.Horstmann
Myślę, że trochę mi zejdzie zanim to zrozumiem ;)

0

Mi to się zdaje, że w książce jest jednak dobrze, a Ty przepisując po prostu w złym miejscu zamknąłeś nawias klamrowy.

0

w książce kazda klasa jest w innym pliku i wszystko działa

0

Miałem identyczny problem. Znalazłem rozwiązanie w tym miejscu.

W skrócie, przy tworzeniu nowego projektu eclipse należy wskazać cały folder z zadaniami z całego rozdziału, w tym wypadku v1ch05. Następnie należy kliknąć prawym na folder źródłowy w programie (v1ch05) i wybrać uruchom jako Aplikacja Java i wszystkie pakiety zostaną utworzone. Dalej już tylko trzeba kliknąć prawym na konkretny program i uruchom jako Aplikacja Java.

Mam nadzieję że się komuś przyda : )

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