• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Definiowanie elementów tablicy typu String w setterze. [java]

VPS Starter Arubacloud
0 głosów
350 wizyt
pytanie zadane 8 czerwca 2018 w Java przez heartagram Obywatel (1,770 p.)

Cześć,

j/w. Utworzyłem klasę z polami:

public class User {
	private String username;
	private String password;
	private String hobby[];

	public User() {
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}


	public String[] getHobby() {
		return hobby;
	}

	public void setHobby(String[] hobby) {
		this.hobby = hobby;			
	}
	
	public static void main(String[] args) {
		User user1 = new User();
	
		u.setHobby(new String[2]);   // ? :X
	  //  u.setHobby(hobby[0]="programming");

		System.out.println(u.getHobby());
	}
}

Chciałbym utworzyć użytkownika z polami: nazwa użytkownika, hasło i hobby( gdzie hobby to np. programowanie i polo na słoniach ) . Jednak nie bardzo mam pomysł jak to w seterze zainicjować i później wyświetlić..

3 odpowiedzi

+1 głos
odpowiedź 8 czerwca 2018 przez RafalS VIP (122,820 p.)
wybrane 20 czerwca 2018 przez heartagram
 
Najlepsza

Tak musiałbyś to zrobić, żeby móc dodawać do tablicy pojedyncze hobby:

public class User{
    private String username;
    private String password;
    private String[] hobby;
    private int nextHobbyIndex = 0;

    public User(String username, String password) {
        this.username = username;
        this.password = password;
        hobby = new String[10];
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String[] getHobby() {
        return hobby;
    }

    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }

    public void addHobby(String hobby) {
        //jesli tablica nam sie skonczyla to musimy zrobic wieksza i przepisac calosc
        if(nextHobbyIndex >= this.hobby.length){
            String newHobbyTab[] = new String[this.hobby.length*2];
            for(int i = 0;i < this.hobby.length;i++){
                newHobbyTab[i] = this.hobby[i];
            }
            this.hobby = newHobbyTab;
        }
        this.hobby[nextHobbyIndex++] = hobby;
    }

    public String toString(){
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(username + " " + password + ": ");
        for(String hobby : this.hobby){
            stringBuilder.append(hobby + ",");
        }
        return stringBuilder.toString();
    }
    public static void main(String[] args) {
        User user1 = new User("ja", "filetZDorsza");
        user1.addHobby("cieply barszczyk");
        user1.addHobby("andrzej duda to sie uda");
        System.out.println(user1);
    }
}

Troche skomplikowane, no nie? Dlatego ktoś wymyślił kolekcje i jest w nich gotowa implementacja tablicy dynamicznej (mądra tablica, która sie sama rozszerza jak braknie miejsca) ArrayList<Typ>. Wtedy to będzie wyglądać tak:

public class User {
    private String username;
    private String password;
    private ArrayList<String> hobby = new ArrayList<>();

    public User() {
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public ArrayList<String> getHobby() {
        return hobby;
    }

    public void setHobby(ArrayList<String> hobby) {
        this.hobby = hobby;
    }

    public void addHobby(String hobby) {
        this.hobby.add(hobby);
    }

    public String toString(){
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(username + " " + password + ": ");
        for(String hobby : this.hobby){
            stringBuilder.append(hobby + ",");
        }
        return stringBuilder.toString();
    }
    public static void main(String[] args) {
        User user1 = new User();
        user1.setPassword("haslo");
        user1.setUsername("ja");
        user1.addHobby("cieply barszczyk");
        user1.addHobby("andrzej duda to sie uda");
        System.out.println(user1);
    }
}

Prosze nie krzyczeć na ArrayList<String> hobby = new ArrayList<>(); :P. Wiem, że typ powinien być List, ale prawdopodobnie autor nie słyszał jeszcze o kolekcjach więc nie chciałem utrudniać.

A najprostsza (choć brzydka wg mnie) wersja tego co chciałeś zrobić - czyli tworzenia tablicy w mainie:

public class User{
    private String username;
    private String password;
    private String[] hobby;
    private int nextHobbyIndex = 0;

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String[] getHobby() {
        return hobby;
    }

    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }

    public String toString(){
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(username + " " + password + ": ");
        for(String hobby : this.hobby){
            stringBuilder.append(hobby + ",");
        }
        return stringBuilder.toString();
    }
    public static void main(String[] args) {
        User user1 = new User("ja", "filetZDorsza");
        String hobby[] = new String[2];
        hobby[0] = "cieply barszczyk";
        hobby[1] = "baklazan";
        user1.setHobby(hobby);
        System.out.println(user1);
    }
}

 

0 głosów
odpowiedź 8 czerwca 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
Wygeneruj sobie metodę toString();
komentarz 8 czerwca 2018 przez heartagram Obywatel (1,770 p.)
to swoją drogą ale nie wiem właśnie jeszcze jak to zainicjować tam :)
komentarz 8 czerwca 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
chodzi ci o pojedyczne hobby?
komentarz 8 czerwca 2018 przez heartagram Obywatel (1,770 p.)
Chciałbym w seterze dodać do tablicy typu String elementy hobby np: programowanie, pływanie czyli będzie tam tablica dwuelementowa, a później je wyświetlić. Nie wiem czy muszę wcześniej ustalić wielkość tablicy ani jak je tam w ogóle dodać.
0 głosów
odpowiedź 8 czerwca 2018 przez niezalogowany
Public void setHobbyAtIndex(String newHobby, int i) {

this.hobby[i] = newHobby;

}

Tylko muszisz wielkosc tablicy zainicjalizować. 

Proponuje w constructorze. 

Podobne pytania

0 głosów
0 odpowiedzi 84 wizyt
–1 głos
1 odpowiedź 471 wizyt
pytanie zadane 21 września 2018 w C i C++ przez Kacperos_89 Początkujący (400 p.)
+1 głos
4 odpowiedzi 4,602 wizyt
pytanie zadane 14 września 2015 w C i C++ przez Wojtek Wiedeński Bywalec (2,460 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...