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

Dołącz do nas za darmo i naucz się zarabiać!

  • 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 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ę
×
×
  • 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 .