Klasy - dziwne wyniki przy obliczaniu

Odpowiedz Nowy wątek
2018-08-11 17:01
0

Witam,

zacząłem zgłębiać temat obiektów w Javie i chciałbym się do niego przyłożyć. Nie rozumiem pewnej rzeczy. Otóż mam dwie klasy (w osobnych plikach) - klasa Kolo.java, która zawiera kod:

public class Kolo
{
    private double promien;

    //definicja akcesora
    public double getPromien()
    {
        return promien;
    }

    //definicja mutatora
    public void setPromien(double r)
    {
        promien = r;
    }

    public double obliczObwodKola()
    {
        double pomocPromien;
        pomocPromien = promien;
        return 2*Math.PI*pomocPromien;
    }

    public double obliczPoleKola()
    {
        double pomocPromien = promien;
        return Math.PI*pomocPromien*pomocPromien;
    }
}

oraz klasę Main.java która zawiera metodę main oraz korzysta z klasy Kolo:

import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
        Kolo koleczko = new Kolo(); //tworzymy obiekt - instancja do klasy Kolo
        Kolo kolko2 = new Kolo(); //tworzymy 2ga taka sama referencje do tego samego obiektu co koleczko
        System.out.println("Pole kola (obiekt1): " + koleczko.obliczPoleKola());
        System.out.println("Obwod kola (obiekt1): " + koleczko.obliczObwodKola());
        System.out.println("Pole kola (obiekt2): " + kolko2.obliczPoleKola());
        System.out.println("Obwod kola (obiekt2): " + kolko2.obliczObwodKola());

        System.out.println("--- ZMIANA PROMIENIA ---");
        koleczko.setPromien(1.0); //mutatorem ustawiam promien

        kolko2.setPromien(2.0); //takze ustawiam promien mutatorem

        System.out.println("Pole kola (obiekt1): " + koleczko.obliczPoleKola());
        System.out.println("Obwod kola (obiekt1): " + koleczko.obliczObwodKola());

        System.out.println("Pole kola (obiekt2): " + kolko2.obliczPoleKola());
        System.out.println("Obwod kola (obiekt2): " + kolko2.obliczObwodKola());
    }
}

Dla testu stworzyłem dwa różne obiekty tego samego typu (Kolo) który zdefiniowałem w klasie Kolo.java. Jakież zdziwienie mnie spotkało, że wynik obliczeń pola koła dla drugiego obiektu daje takie same wyniki co wynik obliczeń dla obwodu! Dlaczego tak się dzieje? Poniżej przedstawiam wynik działania programu:

Pole kola (obiekt1): 0.0
Obwod kola (obiekt1): 0.0
Pole kola (obiekt2): 0.0
Obwod kola (obiekt2): 0.0
--- ZMIANA PROMIENIA ---
Pole kola (obiekt1): 3.141592653589793
Obwod kola (obiekt1): 6.283185307179586
Pole kola (obiekt2): 12.566370614359172
Obwod kola (obiekt2): 12.566370614359172

edytowany 1x, ostatnio: Reiko, 2018-08-11 17:04

Pozostało 580 znaków

2018-08-11 17:05

Ehm, przelicz to na kartce - nie ma tutaj żadnej magii.

Btw, po co Ci zmienne pomocPromien?


edytowany 2x, ostatnio: Patryk27, 2018-08-11 17:07

Pozostało 580 znaków

2018-08-11 17:08
0

Sorry! :D:D:D Temat do usunięcia :)

PS. Patryk wiem że nie jest potrzebna, tylko sobie testowałem :)

Pozostało 580 znaków

2018-08-11 17:09
0

Bo 2 * 2 == 2 ^ 2 :P
Do tego promień powinieneś ustawiać w konstruktorze, albo przynajmniej dać taką możliwość. No i tak jak @2up napisał - nie potrzebujesz zmiennej pomocPromien, użyj po prostu this.promien, czy po prostu promien.

edytowany 1x, ostatnio: iksde, 2018-08-11 17:09

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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