Skocz do zawartości

Java - dodanie obiektu do tablicy


wojnar

Rekomendowane odpowiedzi

Panowie, rozwiązanie jest z pewnością trywialne, ale ja nie mogę go dostrzec.

Chodzi o to, że nie wiem jak dodać obiekt do tablicy w klasie "Pozycje". Program prosi o dodanie atrybutów obiektu, ale w tej klasie ich nie ma.

Nie mogę skorzystać z dziedziczenia, bo w zadaniu jest wyraźnie podane, że mam stworzyć konstruktory w klasie "Zamówienie" - a jak dodam w tej klasie "extends Pozycja" to wtedy wywala błąd konstruktorów "there is no default constructor available".

Jakieś pomysły?

Spoiler

import org.apache.commons.lang3.StringUtils;
import java.util.*;
import java.io.*;
import java.lang.Object;


public class obiekty {
    public static void main(String[] args) {
       // List<Pozycja> pozycjas = new ArrayList(); - Lista obiektów (zwykle używane do wyświetlenia wszystkich obiektów
        Pozycja p1 = new Pozycja("Chleb", 4,3.5);
        Pozycja p2 = new Pozycja("Masło", 2,2);
        System.out.println(p1);
        System.out.println(p2);
       // pozycjas.add(p1);
       // pozycjas.add(p2);
      //  System.out.println(pozycjas);

        Zamowienie z = new Zamowienie();
        z.dodajPozycje(p1);
        z.dodajPozycje(p2);
        System.out.println(z);

    }
}

class Zamowienie{
        int i =0 ;
        int ileDodanych;
        int maksRozmiar=10;
    Pozycja pozycje[] = new Pozycja[maksRozmiar];

        Zamowienie(){
            maksRozmiar = 10;
        }
        Zamowienie(int maksRozmiar){
        this.maksRozmiar = maksRozmiar;
        }
        void dodajPozycje(Pozycja p){
           // pozycje[i] = new Pozycja(); //TUTAJ PROSI MNIE O PODANIE ARGUMENTÓW DLA "POZYCJA". NIE MA DZIEDZICZENIA, WIEC NIE WIDZI TYCH ARGUMENTÓW
        }
        double ObliczWartosc(){
            return 1;
        }
        public String toString(){
            return "Zamowienie:";
        }
}

class Pozycja {
    String nazwaTowaru;
    int ileSztuk;
    double cena;

        Pozycja(String nazwaTowaru, int ileSztuk, double cena) {
            this.nazwaTowaru = nazwaTowaru;
            this.ileSztuk = ileSztuk;
            this.cena = cena;
    }

    double obliczWartosc(){
            double wartosc = ileSztuk*cena;
            return wartosc;
    }

    public String toString(){
        return StringUtils.rightPad(nazwaTowaru, 20)+StringUtils.rightPad(String.valueOf(cena)+"zł",10)+StringUtils.rightPad(String.valueOf(ileSztuk), 4)+obliczWartosc()+"zł";
    }
}
Odnośnik do komentarza

Zarejestruj się za darmo i naucz się zarabiać online!

  • Dostęp do darmowych poradników pokazujących krok po kroku jak zarabiać w Internecie
  • Sposoby zarabiania niepublikowane nigdzie indziej
  • Aktywna społeczność, która pomoże Ci rozwiązać problemy i doradzi
  • Profesjonalne treści na temat SEO, social media, afiliacji, kryptowalut, sztucznej inteligencji i wiele więcej!

ArrayList dobry pomysł, jednak chciałem to zrobić bez jego użycia.

Punkt numer 2 - spróbuję jutro, może coś z tego będzie :D Dzięki za pomoc, oczywiście nagradzam reputem, jak będę miał jakieś problemy to dam znać, prosze nie zamykać tematu @Harry

Edytowane przez Harry
ZAŁATWIONE, dzięki za info :)
Odnośnik do komentarza
12 godzin temu, wojnar napisał:

ArrayList dobry pomysł, jednak chciałem to zrobić bez jego użycia.

Punkt numer 2 - spróbuję jutro, może coś z tego będzie :D Dzięki za pomoc, oczywiście nagradzam reputem, jak będę miał jakieś problemy to dam znać, prosze nie zamykać tematu @Harry

https://repl.it/FDEz/3

Poleciałem wtedy z tym polem statycznym, wystarczy zwykłe. Miałem coś innego w głowie i tak wyszło. To będzie działało bez problemu z wieloma zamówieniami.

Odnośnik do komentarza

Że ja tego nie zauważyłem... :o Tak jak myślałem, odpowiedź była trywialna :) Dzięki!

Ogólnie juz prawie wszystko, tylko teraz zwracając zamówienie muszę wyświetlić wszystkie pozycje tego zamówienia. Jak to zrobić? Oczywiście dałoby się w pętli wyświetlić wszystkie obiekty z tablicy, ale ja muszę to zrobić po słówku return. Kod poniżej i napisałem gdzie to powinno być:

Spoiler

import org.apache.commons.lang3.StringUtils;
import java.util.*;
import java.io.*;
import java.lang.Object;


public class obiekty {
    public static void main(String[] args) {
       // List<Pozycja> pozycjas = new ArrayList(); - Lista obiektów (zwykle używane do wyświetlenia wszystkich obiektów
        Pozycja p1 = new Pozycja("Chleb", 1,3.5);
        Pozycja p2 = new Pozycja("Cukier", 3,4);
        System.out.println(p1);
        System.out.println(p2);
       // pozycjas.add(p1);
       // pozycjas.add(p2);
      //  System.out.println(pozycjas);

        Zamowienie z = new Zamowienie();
        z.dodajPozycje(p1);
        z.dodajPozycje(p2);
        System.out.println(z);

    }
}

class Zamowienie{
        int i =0 ;
        double wartoscZamowienia=0;
        int ileDodanych;
        int maksRozmiar=10;
    Pozycja pozycje[] = new Pozycja[maksRozmiar];

        Zamowienie(){
            maksRozmiar = 10;
        }
        Zamowienie(int maksRozmiar){
        this.maksRozmiar = maksRozmiar;
        }
        void dodajPozycje(Pozycja p){
            pozycje[i] = p;
            ObliczWartosc();
            i++;
        }
        double ObliczWartosc(){
                wartoscZamowienia+=pozycje[i].obliczWartosc();
                return wartoscZamowienia;
        }

        public String toString(){
            return "Twoje zamowienie: "+"TUTAJ POWINNY SIE POJAWIC POZYCJE ZAMOWIENIA "+"Całkowita wartość zamówienia: "+wartoscZamowienia+"zł";
        }
}

class Pozycja {
    String nazwaTowaru;
    int ileSztuk;
    double cena;

       Pozycja(String nazwaTowaru, int ileSztuk, double cena) {
            this.nazwaTowaru = nazwaTowaru;
            this.ileSztuk = ileSztuk;
            this.cena = cena;
    }

    double obliczWartosc(){
            double wartosc = ileSztuk*cena;
            return wartosc;
    }

    public String toString(){
        return StringUtils.rightPad(nazwaTowaru, 20)+StringUtils.rightPad(String.valueOf(cena)+"zł",10)+StringUtils.rightPad(String.valueOf(ileSztuk), 4)+obliczWartosc()+"zł";
    }
}
Odnośnik do komentarza

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Polecana zawartość

    • Poradnik podatkowy - jak rozliczać się z pieniędzy zarobionych przez Internet bez DG?
      Zarabianie w Internecie wiąże się z koniecznością płacenia podatków - a rozliczanie się z urzędem skarbowym nie jest jednoznaczne i proste. Prawo podatkowe w Polsce jest nieujednolicone - co oznacza, że każdy urząd skarbowy może mieć inne interpretacje. Sprawdź jak się za to zabrać!
        • Lubię to!
        • Super
      • 12 odpowiedzi
    • JDG - Jak zarejestrować, rozliczać i prowadzić działalność gospodarczą w Polsce
      Jednoosobowa działalność gospodarcza (JDG) to najprostsza forma prowadzenia działalności gospodarczej w Polsce. Jest to działalność prowadzona przez jedną osobę fizyczną na własne nazwisko i na własne ryzyko. Jednak mimo, że nazywa się jednoosobowa - daje jednak możliwość zatrudniania pracowników. Takich firm jest zarejestrowanych w Polsce zdecydowanie najwięcej. Sprawdź jak zarejestrować, rozliczać i prowadzić własną JDG!
        • Super
      • 3 odpowiedzi
    • Inwestowanie w obligacje detaliczne skarbu państwa - od podstaw!
      Sprawdź jak inwestować w obligacje skarbowe - krok po kroku! Detaliczne obligacje skarbowe to rodzaj obligacji emitowanych przez Państwo, które są oferowane indywidualnym inwestorom, takim jak osoby fizyczne, a nie instytucjom finansowym.

      Są to instrumenty dłużne, nienotowane na żadnym rynku, co oznacza że kupując taką obligację, w praktyce pożyczasz pieniądze państwu na określony czas, a w zamian otrzymujesz odsetki. Można więc powiedzieć że obligacje są indywidualną pożyczką na określony % dla Skarbu Państwa. Państwo odda Ci więcej niż od Ciebie pożyczyło.
        • Super
      • 7 odpowiedzi
    • Jak pozyskiwać i zarabiać na poleconych dzięki make-cash.pl
      W tym poradniku przedstawiam możliwości dostępne dla każdego użytkownika. Dowiesz się jak efektywnie wykorzystać forum do zbierania poleconych i budowania dodatkowych zysków.

      Make-cash.pl to miejsce, gdzie ludzie dzielą się swoimi doświadczeniami, poszukują porad i rekomendacji, a także nawiązują wartościowe kontakty. Codziennie odwiedza nas minimum 2000 unikalnych osób, które są zainteresowane zarabianiem przez Internet - a to ogromny potencjał, z którego może korzystać nie tylko administracja - ale każdy użytkownik forum !
        • Super
      • 2 odpowiedzi
    • Jak pisać treści na stronę internetową z wykorzystaniem AI
      Tworzenie treści od podstaw może być procesem czasochłonnym. Istnieje wiele mniejszych kroków, o których należy pomyśleć w drodze do stworzenia atrakcyjnych treści, takich jak badanie rynku, SEO i redagowanie tekstu, a to tylko początek. Jednak nie musisz zaczynać od zera, gdy istnieją narzędzia AI, które mogą pomóc w tworzeniu wysokiej jakości treści. 
        • Dzięki!
        • Super
      • 13 odpowiedzi
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Ta strona korzysta z ciasteczek, aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie z witryny oznacza zgodę na ich wykorzystanie. Polityka prywatności .