2016-10-03 10 views
-5

배열에 배치 된 여러 User 객체로 Bank 프로그램을 만들려고 노력 중입니다. 새 사용자를 추가하는 방법이 작동하지 않게되었습니다. 누군가 그 문제가 무엇인지 나에게 말해 줄 수 있습니까?Java의 배열에 객체 추가

id는 배열에서이 특정 사용자 개체의 위치에 따라 할당됩니다.

public void addUser(String u1, String p1) { 
    int i=0; 

     users[i] = new User(u1,p1,id); 
     users[i].setUsername(u1); 
     users[i].setPassword(p1); 
     users[i].setId(i); 
     println ("New user created"); 
     i++; 
} 
+1

정확하게 "작동하지 않습니까?" ('id'가 정의되지 않았고,'i'가 항상'0'이고, 생성자에 이미 설정된 값을 설정하고 있습니다.) – David

+0

사용자를 선언하는 곳을 제공해야합니다. 배열이 동적 인 경우에는 ArrayList가 필요합니다. – scrappedcola

답변

0

메서드가 호출 될 때마다 "i"는 0으로 재설정됩니다. 사용자 [0] 만 설정합니다.

1

변수 내에서 i이 선언됩니다. 메서드가 호출 될 때마다 0으로 다시 시작됩니다. 따라서 각 사용자를 배열에 0 위치에 추가하려고합니다.

변수를 메서드 외부에서 (필드로) 선언하면 예상대로 작동합니다.

private int i = 0; 

public void addUser(String u1, String p1) 
{ 
    users[i] = new User(u1, p1, id); 
    users[i].setUsername(u1); 
    users[i].setPassword(p1); 
    users[i].setId(i); 
    println("New user created"); 
    i++; 
} 
-1

"i"varible은 전역이어야합니다. 이 mehtod를 호출 할 때, 재설정됩니다 때문에 "나는"나는 당신의 질문이 무엇인지 이해하는 경우

0

변수는 코드에서 문제는 당신이 addUser() 프로 시저를 호출 할 때 항상 새 사용자를 삽입한다는 것입니다 의 위치는 0입니다.

1) 전역 변수 사용 :

// global variable: 
int numberOfUsers = 0; 
... 
public void addUser(String u1, String p1) { 
    users[numberOfUsers] = new User(u1,p1,id); 
    users[numberOfUsers].setUsername(u1); 
    users[numberOfUsers].setPassword(p1); 
    users[numberOfUsers].setId(numberOfUsers); 
    println ("New user created"); 
    numberOfUsers++; 
} 

2)에 addUser() 기능으로 사용자의 수를 통과

그래서 나는 당신의 문제를 해결하기 위해 두 가지 방법을 제안거야 :

// calling the function 
newNumberOfUsers = addUser("string u1", "string p1", newNumberOfUsers); 
... 
public int addUser(String u1, String p1, int numberOfUsers) { 
    users[numberOfUsers] = new User(u1,p1,id); 
    users[numberOfUsers].setUsername(u1); 
    users[numberOfUsers].setPassword(p1); 
    users[numberOfUsers].setId(numberOfUsers); 
    println ("New user created"); 
    return (numberOfUsers++); 
}