Grupa radnika (objekti) – rešenje

Pored glavne klase pravi se i klasa koja opisuje radnika, na primer Radnik. Svaki radnik ima ime, prezime, zaradu po satu, broj radnih sati nedeljno i nedeljnu zaradu.

Klasa Radnik

// Fajl Radnik.java
// Klasa Radnik opisuje jednog radnika
public class Radnik {
    String ime;
    String prezime;
    double zarada_po_satu;
    int broj_radnih_sati;   // nedeljno
    double zarada;          // nedeljna zarada
}

Glavna klasa

U glavnoj klasi se prave dva radnika kao objekti, unose im se podaci, zatim se računaju nedeljne zarade (zarada = broj_radnih_sati · zarada_po_satu) i ispisuju na ekranu:

// Fajl GrupaRadnika.java
import java.util.Scanner;

public class GrupaRadnika {

    public static void main(String[] args) {
        Radnik radnik1 = new Radnik();
        Radnik radnik2 = new Radnik();
        Scanner ucitavac = new Scanner(System.in); // objekat za učitavanje

        System.out.println("Unesi ime i prezime prvog radnika");
        radnik1.ime = ucitavac.nextLine();
        radnik1.prezime = ucitavac.nextLine();
        System.out.println("Unesi zaradu po satu za prvog radnika");
        radnik1.zarada_po_satu = ucitavac.nextDouble();
        System.out.println("Unesi broj radnih sati nedeljno za prvog radnika");
        radnik1.broj_radnih_sati = ucitavac.nextInt();
        ucitavac.nextLine(); // "pojede" ostatak reda posle broja (inače bi ime drugog radnika bilo prazno)

        System.out.println("Unesi ime i prezime drugog radnika");
        radnik2.ime = ucitavac.nextLine();
        radnik2.prezime = ucitavac.nextLine();
        System.out.println("Unesi zaradu po satu za drugog radnika");
        radnik2.zarada_po_satu = ucitavac.nextDouble();
        System.out.println("Unesi broj radnih sati nedeljno za drugog radnika");
        radnik2.broj_radnih_sati = ucitavac.nextInt();

        // Izračunavanje zarada
        radnik1.zarada = radnik1.broj_radnih_sati * radnik1.zarada_po_satu;
        radnik2.zarada = radnik2.broj_radnih_sati * radnik2.zarada_po_satu;

        // Ispis rezultata
        System.out.println(radnik1.ime + " " + radnik1.prezime + " zaradjuje nedeljno " + radnik1.zarada + " dinara");
        System.out.println(radnik2.ime + " " + radnik2.prezime + " zaradjuje nedeljno " + radnik2.zarada + " dinara");
    }
}

Primer izvršavanja

Ulaz

Petar
Petrovic
500
40
Marko
Markovic
450
35

Izlaz (poslednja dva reda)

Petar Petrovic zaradjuje nedeljno 20000.0 dinara
Marko Markovic zaradjuje nedeljno 15750.0 dinara
Ispravljena greška: u kodu sa stare slike ime drugog radnika se čitalo sa nextLine() odmah posle nextInt(). Tada nextLine() pročita samo ostatak reda posle broja (prazan tekst), pa drugi radnik ostaje bez imena, a prezime dobija ono što je trebalo da bude ime. Rešenje: posle broja dodati jedan prazan poziv ucitavac.nextLine();.