2014-03-04 6 views
0

나는 각 줄에 공백으로 구분 된 사용자 이름 암호 쌍이 들어있는 텍스트 파일에서 사용자 이름 및 암호 조합 목록을 userList라는 ArrayList에 추가하려고합니다. User 생성자는 두 개의 문자열을 사용하여 사용자 이름과 비밀번호로 설정합니다. 이것은 간단해야하지만, 다음 코드 뒤에 배열을 탐색 할 때 어떤 이유에서든 모든 사용자는 동일한 사용자 이름과 암호 (텍스트 파일의 마지막 줄)를 사용합니다. 아래ArrayList에 객체 추가 <object>

참조 코드 :

 for(User u : userList){ 
      System.out.println(u.getUsername()+" --> "+u.getPassword()); 
     } 

그리고 여기에 사용자 클래스의 :

공용 클래스 사용자 {

private static String username; 
private static String password; 


public User(String u, String p) { 

    username = u; 
    password = p; 
} 

public String getUsername(){ 
    return username; 
} 

public String getPassword(){ 
    return password; 
} 
다음

BufferedReader br = new BufferedReader(new FileReader("user_pass.txt")) 

String line, username, password; 

while ((line = br.readLine()) != null) { 

    String separated[] = line.split(" "); 

    username = separated[0]; 
    password = separated[1]; 

    userList.add(new User(username,password)); 
} 

내가 ArrayList를 횡단하고있어 방법

+3

당신이 당신의 사용자 클래스에 대한 코드를 게시 할 수 있습니까? 루프의 각 반복마다 사용자 이름과 비밀번호의 값은 무엇입니까? –

+13

'username'과'password' 필드는 언제든지 정적입니까? – Reimeus

+1

일반 텍스트 (예 : user_pass.txt 파일)에 사용자 이름과 비밀번호 조합을 저장하는 것은 좋은 생각입니다. 먼저 해당 문제를 해결해야합니다. – ErstwhileIII

답변

7

usernamepassword 필드는 static입니다. 즉, 클래스와 연관된 필드 당 하나의 값 (마지막으로 할당 된 값)을 유지합니다. static 키워드를 제거하면 그들에게 인스턴스 변수를 만들고 그들이 (User.usernameUser.password를 사용하여 호출) 글로벌 수준의 변수 의미

private String username; 
private String password; 
+0

사람에 일찍 붙잡아 라. – christopher

0

usernameUser 클래스 password 필드는 정적 클래스의 인스턴스에 값을 생성합니다 . 개별 User 개체 인스턴스가 사용자 이름과 암호를 가질 수 있도록 static 키워드를 제거해야합니다.

0

변수 사용자 이름과 암호 앞에 User 클래스의 "정적"을 삭제하면 괜찮을 것입니다.

또는이 작동합니다 :

class User { 
    String username, password; 

    public User(String u, String p) { 
     username = u; 
     password = p; 
    } 
} 


//Code in the other class 
Scanner s = new Scanner(new File("user_pass.txt")); 
while (scanner.hasNext()) userList.add(new User(s.next(), s.next())); 
s.close(); 

가}