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

Java, klasa punkt i odcinek, ERRROR

Object Storage Arubacloud
0 głosów
746 wizyt
pytanie zadane 18 listopada 2016 w Java przez Lukasz95 Bywalec (2,160 p.)

Cześć, mam klasę punkt(ma pola x,y double), chcę utworzyć obiekt odcinek korzystając z parametrów (punkt ,punkt) to wszystko, ok ale gdy chcę skorzystać z parametrów (double double double double) to coś się krzaczy. Pomoże ktoś?

 

package com.company;
import static java.lang.Math.*;

public class Main {

    public static class punkt{
        private double x;
        private double y;
        public punkt(double x,double y){
            this.x = x;
            this.y = y;
        }
        public double getX(){
            return this.x;
        }

        public double getY(){
            return this.y;
        }

        public void setX(double x){
            this.x = x;
        }

        public void setY(double y){
            this.y = y;
        }

        public void show(){
            System.out.println(getY()+" "+getX());
        }


    }

    public static class odcinek{
        private punkt punkt1;
        private punkt punkt2;

        public odcinek(punkt p1, punkt p2){
            this.punkt1 = p1;
            this.punkt2 = p2;
        }

        public odcinek(double a1, double a2,double b1,double b2){
            this.punkt1.setX(a1);
            this.punkt1.setY(a2);
            this.punkt2.setX(b1);
            this.punkt2.setY(b2);
        }

        public punkt getP1(){
            return this.punkt1;
        }

        public punkt getP2(){
            return this.punkt2;
        }

        public void setP1(punkt p3){
            this.punkt1=p3;
        }

        public void setP2(punkt p3){
            this.punkt2=p3;
        }
        public double dlugosc(){
            return sqrt(pow(punkt2.getX()-punkt1.getX(),2)+pow(punkt2.getY()-punkt1.getY(),2));
        }

        public void wyswietl(){
            System.out.println("Punkt 1: "+punkt1.getX()+" "+punkt1.getY());
            System.out.println("Punkt 2: "+punkt2.getX()+" "+punkt2.getY());
            System.out.println("Dlugosc odcinka |P1 P2|: "+dlugosc());
        }



    }



    public static void main(String[] args) {

        punkt p1 = new punkt(1,2);
        punkt p2 = new punkt(3,4);
        punkt p3 = new punkt(1,33);
        p1.show();
        p2.show();
        p3.show();
        odcinek o1 = new odcinek(p1,p2);
        odcinek ox =  new odcinek(1,2,3,4);

    }
}

 

1 odpowiedź

+1 głos
odpowiedź 18 listopada 2016 przez ribeiro Stary wyjadacz (11,440 p.)
wybrane 18 listopada 2016 przez Lukasz95
 
Najlepsza
Czy to nie jest tak, że tworząc odcinek ox odcinek ox = new odcinek(1,2,3,4) w konstruktorze czteroargumentowym wywołujesz metody jego prywatnych obiektów typu punkt, które nigdy jednak nie zostały zainicjalizowane? W momencie np. wywołania this.punkt1.setX(a1); obiekt this.punkt1 wciąż nie istnieje.
komentarz 18 listopada 2016 przez Lukasz95 Bywalec (2,160 p.)
A to nie jest tak ,że jak robię new odcinek() to konstruktor tworzy ten odcinek i co za tym idzie punkt1 i punkt2 bo są to pola w klasie?
2
komentarz 18 listopada 2016 przez ribeiro Stary wyjadacz (11,440 p.)
Tworzy te punkty, ale nie przypisuje do nich nowych obiektów. W przypadku odcinka o1 w argumentach konstruktora posyłasz już stworzone punkty za pomocą new punkt()
1
komentarz 18 listopada 2016 przez Lukasz95 Bywalec (2,160 p.)
okej dzięki już rozumiem. :)
komentarz 6 marca 2017 przez kamip123 Nowicjusz (100 p.)
Miałem dokładnie ten sam problem i twój komentarz mi pomógł dzięki :)

Podobne pytania

0 głosów
3 odpowiedzi 958 wizyt
0 głosów
1 odpowiedź 320 wizyt
0 głosów
2 odpowiedzi 138 wizyt
pytanie zadane 27 października 2016 w Java przez Lukasz95 Bywalec (2,160 p.)

92,584 zapytań

141,433 odpowiedzi

319,668 komentarzy

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

...