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);
}
}