[Java] Prosta metoda

anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

[Java] Prosta metoda

Post autor: anika91 »

Witam,

Witam, toczę walkę z programowaniem obiektowym . Mam klasę "Lody" (której obiektami są trzygałkowe lody). Potrzebuję dopisać metodę umożliwiająca zmianę kolejności gałek. Chodzi o to :

Najpierw ustawiam gałki lodów:

Kod: Zaznacz cały

lodyArtura.ustawGalke(1,"czekoladowe");
  lodyArtura.ustawGalke(2,"orzechowe");
  lodyArtura.ustawGalke(3,"cytrynowe");
następnie wywołuje metodę wyswietl() która zwraca:

Kod: Zaznacz cały

zamawiane smaki: czekoladowe, orzechowe, cytrynowe
a następnie metodę lodyArtura.przesunWyzejSmak(2);
która powinna zamienić dwa ostatnie smaki miejscami , czego efektem po wywołaniu metody wyswietl();
powinna się pojawić nowa kolejność:

Kod: Zaznacz cały

zamawiane smaki: czekoladowe, cytrynowe , orzechowe


Moja klasa wygląda tak:

Kod: Zaznacz cały

class Lody{
       
        private int numer;
        private String galka1;
        private String galka2;
        private String galka3;

       
        public void ustawGalke(int numer, String smak){
               
                if (numer==1){
                       
                        this.galka1=smak;       
                }
               
                if (numer==2){
                       
                        this.galka2=smak;
                }
               
                if (numer==3){
                       
                        this.galka3=smak;
                }
       
               
        }
       
        public void wyswietlJakie(){
               
        System.out.println("Zamiawiane smaki: "+galka1+" "+galka2+" "+galka3);
               
        }
       
        public void przesunWyzejSmak(int numer){
                
        }

}
Chyba jest to proste, jednak nie mogę wymyślić jak napisać tą metodę przesunWyzejSmak(int numer). Za pomoc serdecznie dziękuje
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

[Java] Prosta metoda

Post autor: kadiii »

Użyj najzwyklejszego przypisania wartości do zmiennych. Chyba potrafisz zamienić wartości dwóch zmiennych ze sobą?
anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

[Java] Prosta metoda

Post autor: anika91 »

No chyba nie za bardzo... ? Jak zamienić ? Gdybym wiedziała to bym nie pytała... Próbowałam różnych kombinacji.
Awatar użytkownika
Dedemonn
Użytkownik
Użytkownik
Posty: 689
Rejestracja: 21 lut 2007, o 19:40
Płeć: Mężczyzna
Lokalizacja: Z kompa
Podziękował: 26 razy
Pomógł: 137 razy

[Java] Prosta metoda

Post autor: Dedemonn »

Załóżmy, że mamy 2 zmienne:

Kod: Zaznacz cały

int x;
int y;
Jeśli chcemy zamienić ich wartości miejscami, to nie możemy użyć x=y, bo wartość x'a zostanie utracona i nie będzie już jej można przypisać y'owi. Wystarczy więc utworzyć pomocniczą zmienną, np. z, i przed przypisaniem x=y, wartość x'a zapamiętać w z.

Analogicznie dla Stringów.

PS: Jakich kombinacji w takim razie używałaś jeśli można wiedzieć?


Pzdr
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

[Java] Prosta metoda

Post autor: smiechowiec »

Dla numeru 2 możesz spróbować np tak

Kod: Zaznacz cały

public void przesunWyzejSmak(int numer) {
   if (numer == 2)  {
     String galkapom = galka2;
     galka2 = galka3;
     galka3 = galkapom;  
   }              
}
W sumie warto by było te gałki umieścić w tablicy np
String galka[] = new String[3];
wtedy
public void ustawGalke(int numer, String smak){
galka[numer - 1] = smak;
}

public void przesunWyzejSmak(int numer) {
String galkapom = galka[numer - 1];
galka[numer - 1] = galka[numer];
galka[numer] = galkapom;
}
anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

[Java] Prosta metoda

Post autor: anika91 »

Na tablicach w prawdzie nie miałam tego robić, ale z czystej ciekawości zapytam bo nie wiem jednej rzeczy a właściwie tego fragmentu kodu:

Kod: Zaznacz cały

String galka[] = new String[3];
Gdzie mam to umieścić , rozumiem że to jest tworzenie nowego obiektu, a dokładniej obiektu z 3elementową tablicą, więc powinno się to znaleźć w klasie Main czy może jak Pole w klasie ? ?
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

[Java] Prosta metoda

Post autor: kadiii »

Powinno sie znajdować w konstruktorze klasy Lody. Ilość gałek mogłaby być wtedy parametrem konstruktora(o ile dopuszczasz inną ilość gałek niz 3). Ogólnie to idea jest taka: masz klasę z nieprzypisanym wskaźnikiem i podczas tworzenia obiektu(użycie konstruktora) za pomoca wskaźnika alokujemy sobie obszar pamięci dzięki czemu mozemy już korzystać z tablicy na rzecz tego obiektu.
anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

[Java] Prosta metoda

Post autor: anika91 »

Uff.. dałam sobie radę i wszystko działa.

Dziękuje bardzo
ODPOWIEDZ