Pomoc z napisaniem klasy reprezentującej wektor liczb zmiennoprzecinkowych

0

Witam.
Mam do napisania programik o treści: Napisz klasę reprezentującą wektor liczb zmiennoprzecinkowych. Klasa powinna zawierać:

  • konstruktor bezparametrowy, który pozwala na utworzenie wektora o rozmiarze 100 i elementach z wartością początkową 0
  • konstruktor parametrowy, który pozwala na utworzenie wektora o rozmiarze n i elementach z wartością początkową value
  • metodę dodającą dwa wektory, która zwraca wynik w postaci nowego obiektu klasy wektora (w przypadku przekazania wektorów
    o różnych rozmiarach metoda powinna wyrzucić wyjątek klasy IllegalArgumentException)
  • metodę zwracającą tekstową reprezentację wektora w postaci <w1,w2,..,wn> gdzie wi wartość i-tego elementu.
    Przykład użycia: Wektor w1 = new Wektor(); Wektor w2 = new Wektor(100,2);

Wektor w3 = w1.add(w2); System.out.println(w3.toString());

napisałem to tak:

class wektor{

public wektor(){
int[] w = new int[];
}
public wektor(int a int value){
int[] w = new int[a]
for(int i=0;i<a;i++)
w[i] = value;
}

public double dodaj(int a[] int b[]){
if(w1!=w2) throw new Niezgodnosc
	wektor w3 = new wektor();	
	return w3 = w1 + w2;
}
public double wypisz(int a[]){
for(int i=0;i<a;i++)
System.out.print(a[i]); 
}

public static void main(String[] args){

wektor w1 = new wektor(10,5);
wektor w2 = new wektor(11,8);
try{	
w1.wdodaj(w2)
}
catch (Niezgodnosc e)
	{
	System.out.println("Wektory nie są sobie równe");
	}
wektor.wypisz();

Wydaje mi się że konstruktory są zaprojektowane prawidłowo, lecz nie wiem jak przekazać tablicę z obiektów i żeby to chodziło prosił bym o w miarę jasne wytłumaczenie i poprawę kodu.

0
  1. W klasie wektor masz metodę dodaj(int a[] int b[]). Argumenty rozdziela się przecinkami, więc powinno być dodaj(int a[], int b[]). Dalej, w metodzie main korzystasz z jakiejś wziętej nie wiadomo skąd metody wdodaj(wektor w), która nie została zaimplementowana w klasie wektor.
  2. Klasa wektor posiada metodę wypisz przyjmującą jako argument tablicę int, ty wywołujesz metodę wektor.wypisz() bez argumentów.
  3. Próbujesz poprzez klasę wywołać metodę niestatyczną - wypisz jest niestatyczne, a ty zamiast wywołać w1.wypisz lub w2.wypisz, wywołujesz wektor.wypisz.
  4. Czym jest Niezgodnosc e?
0
  1. Umieszczaj kod w znacznikach <code class="java"></code>.
  2. Brakuje metody zwracającej tekstową reprezentację wektora - metoda wypisz() robi co innego. Ta brakująca metoda powinna się nazywać toString().
  3. Klasa wektor nie reprezentuje wektorów, powinna zawierać pole (składową) będącą tablicą liczb. W konsekwencji oba konstruktory są błędne.
  4. Rzucany wyjątek ma być typu IllegalArgumentException.
0

Czyli jak to powinno wyglądać poprawnie??
Bo troszkę się pogubiłem najwyraźniej.

1

Poprawiać Twojego kodu nie można, ma więcej błędów niż fragmentów poprawnych. Szkielet klasy Wektor (przestrzegaj konwencji, nazwy klas zaczynamy dużą literą):

public class Wektor
{
    double int[] w; 
    public Wektor()
    {
        w = new double[...]; 
    }
    public Wektor(int rozmiar, double value)
    {
        w = new double[rozmiar];
        for(int i=0;i<rozmiar;i++)
            w[i] = value;
    }
 
    public Wektor dodaj(Wektor w1, Wektor w2)
    {
        if(w1.getW().length != w2.getW().length) throw ...;
        else
        {
            Wektor w3 = new Wektor(w1.getW().length,0);
            ...        
            return w3;
        }
    }
    public String toString()
    {
         String opis = ...
         return opis;
    }
    public double[] getW()
    { 
        return w;
    }
}

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