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

Java, Scanner i hermetyzacja

Object Storage Arubacloud
0 głosów
290 wizyt
pytanie zadane 7 maja 2017 w Java przez niezalogowany

Jak zaimplementować w kodzie wprowadzanie danych, żeby było to zgodne z zasadami hermetyzacji? Czy umieszczenie Scanner w "setterze" jest poprawne?

 

private int liczba  
public void setWaga(int jakaLiczba)
    {
        System.out.println("Podaj liczbe ");
        Scanner sc = new Scanner(System.in);
        liczba = sc.nextInt();
        jakaLiczba = liczba;
    }

 

1 odpowiedź

+1 głos
odpowiedź 7 maja 2017 przez KubenQPL Maniak (62,820 p.)
wybrane 8 maja 2017
 
Najlepsza
Nie jest to poprawne. Powinieneś w jakimś mainie czy gdzie tam używasz setter'a, najpierw pobrać tego inta przez scanner, a potem go podać do settera. Setter powinien tylko i wyłącznie przypisywać podaną wartość do zmiennej.
komentarz 8 maja 2017 przez niezalogowany

Tak dla pewności dopytam: czy tak jest poprawnie?


import java.util.Scanner;
class Baza
{
    private int liczba;

    public int inputLiczba()
    {
        System.out.println("Jaka liczba? ");
        Scanner sc = new Scanner(System.in);
        liczba = sc.nextInt();
        return liczba;
    }

    public void setLiczba(int jakaLiczba)
    {
        jakaLiczba = liczba;
    }

    public int getLiczba()
    { 
        return liczba;
    }

    void odlicz()
    {
            System.out.println(liczba);
        if(liczba > 10)
            System.out.println("Powyzej 10");
        else
            System.out.println("Ponizej 10");
    }
} //koniec baza

class BazaTester
{
    public static void main (String[] args)
    {
        Baza liczby [] = new Baza[3];
        for (int i = 0; i < liczby.length; i++)
        {
            liczby[i] = new Baza();
            liczby[i].inputLiczba();
            liczby[i].setLiczba(5);
            liczby[i].odlicz();
        }
    } //koniec main
} //koniec BazaTester
komentarz 8 maja 2017 przez KubenQPL Maniak (62,820 p.)

W setterze przypisujesz do argumentu settera wartość zmiennej liczba, powinno być na odwrót.

setLiczba(int liczba){
this.liczba = liczba;
}

 

Podobne pytania

0 głosów
1 odpowiedź 761 wizyt
pytanie zadane 21 lutego 2019 w Java przez Metarinda Użytkownik (740 p.)
0 głosów
0 odpowiedzi 817 wizyt
pytanie zadane 3 grudnia 2018 w Java przez MarioB Nowicjusz (120 p.)
0 głosów
1 odpowiedź 327 wizyt
pytanie zadane 30 sierpnia 2018 w Java przez michaljbjj Początkujący (460 p.)

92,550 zapytań

141,393 odpowiedzi

319,522 komentarzy

61,935 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!

...