• 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]

Object Storage Arubacloud
0 głosów
362 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 86 wizyt
–1 głos
1 odpowiedź 473 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,635 wizyt
pytanie zadane 14 września 2015 w C i C++ przez Wojtek Wiedeński Bywalec (2,460 p.)

92,543 zapytań

141,386 odpowiedzi

319,494 komentarzy

61,929 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...