Witam, dostałem ostatnio następujące zadanie związane z tablicami:
Zdefiniować klasę Tablica, która zawiera prywatne atrybuty:
x - tablicę liczb typu int,
n – ilość elementów.Zdefiniować następujące konstruktory:
- Tablica( ) – tworzący tablicę 10-elementową oraz wypełniający ją wartościami
wygenerowanymi za pomocą metody random z klasy Math; trzeba je rzutować do typu
int; można też wykorzystać metodę round z klasy Math,- Tablica( int n ) - tworzący tablicę n-elementową oraz wypełniający ją zerami,
- Tablica( int n, int x[ ] ) - tworzący tablicę n-elementową oraz wypełniający ją
elementami z listy argumentów.Zdefiniować następujące metody:
.
// to teraz nieistotne :)
.
Zdefiniować statyczną metodę main, w której utworzyć 3 tablice – za pomocą każdego z
konstruktorów i wywołać dla nich wybrane metody.
No i zbudowałem konstruktory:
public class Tablica
{
private static int x[];
private static int n;
Tablica(){
n=10;
x = new int[n];
for(int i=0; i<x.length; i++){
x[i] = (int)(Math.random()*10);
}
}
Tablica(int n){
x = new int[n];
for(int i=0; i<x.length; i++){
x[i] = 0;
}
}
Tablica(int n, int y[]){
x = new int[n];
for(int i=0; i<x.length; i++){
x[i] = y[i];
}
}
}
Napisałem również wszystkie metody i teraz czas na wywołanie tych konstruktorów w main - i tu się pojawiaja problemy:
- Osobne wywołanie konstruktora Tablica(); działa elegancko (czyli po wywołaniu metody "wyswietlTablice" dla danego obiektu w konsoli pokazuje się 10 losowych liczb)
- Podobnie Tablica(n); (pokazuje sie n liczb 0)
- Wywołanie konstruktora Tablica(n, y[]) już nie działa, program wywala błąd - '.class' expected
- Przy jednoczesnym wywołaniu Tablica() i Tablica(n) już się coś kisi (konkretnie po wywołaniu metody "wyswietlTablice" w konsoli pokazuje się 2 razy po n liczb 0 :) )
Poniżej przykładowa klasa main, próbowałem juz wszystkiego co mi do głowy przyszło i ni nie chce tego ruszyć:
public static void main(int n, int y[]){
Tablica tab1 = new Tablica(n, y[]);
tab1.wyswietlTablice();
}
Zapewne cos ostro namieszałem, zapewne w wielu miejscach - ale nie jestem po prostu w stanie tego znaleźć, więc będe wdzięczny za wszelką pomoc :)
Edit:
Dodam jeszcze, że wszystko (konstruktory, main, metody) są w jednej klasie, więc prosze się nie sugerować tym, że wszystko jest wklejone osobno, po prostu jako całość kod byłby nieco za długi :)
Edit2:
Zrobiłem tak:
public static void main(int n, int y[]){
Tablica tab1 = new Tablica();
Tablica tab2 = new Tablica(n);
Tablica tab3 = new Tablica(n, y);
tab1.wyswietlTablice();
tab2.wyswietlTablice();
tab3.wyswietlTablice();
}
I w konsoli dostałem następujący wynik dla n=3 i y[]={4, 8, 12}:
4 8 12
4 8 12
4 8 12
Czyli jakby 3 razy wywołało mi ostatni konstruktor.