Wątek przeniesiony 2015-11-05 06:43 z Java przez bogdans.

Tablice - dodawanie elementu do tablicy(newbie)

0

Witajcie,

jestem bardzo mocno początkującym w temacie i w ramach treningu przygotowuję takie coś:

Zależy mi na tym, aby każdy wprowadzony nowy obiekt, czyli jego imie, zostało wprowadzone do tablicy populacjaImiona,
do wyświetlenia wystarczy pętla for, więc z tym nie ma problemu.
Problem jest z odpowiednim zapisem i dodaniem imienia do tej tablicy i w przypadku "śmierci" człowieka usunięcie tego elementu.

Za pomoc z góry dzięki.

Do rzeczy:


package cwiczenie001_mala.wioska;


class ludnoscWioski {
    static int ludzie = 0;
    String imie;
    String[] populacjaImiona;
    
    static int pokazIloscLudzi() {
        return ludzie;
    }
    
   
    void powitanieCzlowieka(String imie) {
        ludzie++;
        this.imie = imie;
        System.out.println("Narodził się nowy człowiek!");
        System.out.println("Hej! Jestem " + imie + ", jak wspaniale jest w tym mieście!");
        populacja();
    }
    
    void smiercCzlowieka() {
        System.out.println("Jeden człowiek umarł");
        ludzie--;
        populacja();
    }
    
    void populacja() {
        if(ludnoscWioski.pokazIloscLudzi() == 0) {
            System.out.println("Nasze miasto zamieszkuje obecnie: " + ludnoscWioski.pokazIloscLudzi() + " ludzi.");
        } else if(ludnoscWioski.pokazIloscLudzi() == 1) {
            System.out.println("Nasze miasto zamieszkuje obecnie: " + ludnoscWioski.pokazIloscLudzi() + " człowiek.");
        } else {
            System.out.println("Nasze miasto zamieszkuje obecnie: " + ludnoscWioski.pokazIloscLudzi() + " ludzi.");
        }
    }
    
    
//    void mieszkancyImie() {
//        
//    }

}

public class Cwiczenie001_MalaWioska {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("Witaj w naszej wiosce wiosce!");
        
        ludnoscWioski populacja_liczba = new ludnoscWioski();
        populacja_liczba.populacja();
        
        ludnoscWioski czlowiek1 = new ludnoscWioski();
        czlowiek1.powitanieCzlowieka("Franek");
        ludnoscWioski czlowiek2 = new ludnoscWioski();
        czlowiek2.powitanieCzlowieka("Ziomek");
        ludnoscWioski czlowiek3 = new ludnoscWioski();
        czlowiek3.powitanieCzlowieka("Kici");
        czlowiek1.smiercCzlowieka();
        czlowiek2.smiercCzlowieka();

    }

}




0

1.Nazewnictwo. Jak to jest, że pokazIloscLudzi nic nie pokazuje, ale coś zwraca, ale za to populacja wypisuje populację na wyjście? Nazwa metody powinna opisywać to co ona robi.
2.Bądź bardziej zwięzły. Nie pytasz o to, że tworzysz kod opakowujący obsługę wioski blah blah blah. Twoje pytanie powinno brzmieć: jak dodawać i usuwać elementy w tablicy ze stringami?, a odpowiedź na to znajdziesz w internecie szukając c# string array.

0

Lepsze ćwiczenie to zrobić to krócej, efektywniej. Zabawna aplikacja.

1

Bardziej elastyczne jest użycie kolekcji. Przy tablicy musisz z góry ograniczyć ilość imion.

String[] populacjaImiona = new String[40];
...
    void powitanieCzlowieka(String imie) {
        populacjaImiona[ludzie] = imie;
        ludzie++;
        this.imie = imie;
        System.out.println("Narodził się nowy człowiek!");
        System.out.println("Hej! Jestem " + imie + ", jak wspaniale jest w tym mieście!");
        populacja();
    }
0

Zrób klasę czlowiek i wrzucaj ją do ArrayList (zmienna List).

http://www.coderanch.com/t/407912/java/java/Class-objects-ArrayList

0

Dziękuję za podpowiedzi.
Z tego co na szybko zerknąłem, to faktycznie, najszybszym i chyba najlepszym rozwiązaniem to użycie kolekcji.

@Patryk27 - jeśli chodzi o nazewnictwo, to faktycznie, nie zostało to odpowiednio nazwane, dziękuję za zwrócenie uwagi, jest to istotna sprawa.

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