2015-11-03 93 views
-2

所以我被要求做一個程序,其中有一個登錄頁面 而我應該使用vector來製作這個登錄頁面。 (Java語言) 如果我只在這個程序上註冊一個用戶。它會工作,但如果我拒絕超過1個用戶,它會自動打破並說indexoutofbound。 這是代碼爲什麼這段代碼ArrayIndexOutOfBound?

import java.util.Scanner; 
import java.util.Vector; 
public class T028_J1H2 { 

    public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner input= new Scanner (System.in); 

    int choice; 
    String user; 
    String pass; 
    String age; 
    String address; 
    String email; 
    String hobby; 
    int count=0; 
    Vector<String> username = new Vector<String>(); 
    Vector<String> password = new Vector<String>(); 
    Vector<String>umur= new Vector<String>(); 
    Vector<String>alamat= new Vector<String>(); 
    Vector<String>temp_email = new Vector<String>(); 
    Vector<String>hobi = new Vector<String>(); 
    Vector<Vector<String>> profile = new Vector<Vector<String>>(); 
    do{ 
    System.out.println("1. Login"); 
    System.out.println("2. Register"); 
    System.out.println("3. Exit"); 
    System.out.print("Choose : "); 
    choice = input.nextInt(); 
    input.nextLine(); 
    switch (choice) 
    { 
     case 1: 
      int pilihan; 
      int index=0; 
      String login_user; 
      String login_password; 
      if(profile.isEmpty()) 
      { 
       System.out.println("Please Register First"); 

      } 
      else 
      { 
       int flag_user=0; 
       int flag_pass=0; 
       do{ 
       System.out.print("User : "); 
       login_user=input.nextLine(); 
       System.out.print("Password : "); 
       login_password=input.nextLine(); 
       for(int i=0;i<count;i++) 
       { 
        if(login_user.equals(username.get(i))) 
          { 

           flag_user=1; 
          } 
        if(login_password.equals(password.get(i))) 
          { 
           flag_pass=1; 
          } 
       } 
       if(flag_user==0 || flag_pass==0) 
       { 
        System.out.println("Username/Password Wrong"); 
       } 
       else if(flag_user==1 && flag_pass==1) 
       { 
        index++; 
        break; 
       } 
       }while(flag_user==0 || flag_pass==0); 
       if(flag_user==1 && flag_pass==1) 
       { 
        do{ 
       System.out.println("1. View Profile"); 
       System.out.println("2. Buy Product"); 
       System.out.println("3. View Product"); 
       System.out.println("4. Insert Product"); 
       System.out.println("5. Update Product"); 
       System.out.println("6. Delete Product"); 
       System.out.println("7. Exit"); 
       System.out.print("Choose : "); 
       pilihan=input.nextInt();input.nextLine(); 
       switch (pilihan) 
       { 
       case 1: 
        System.out.println("View Profile"); 
        System.out.println("========================="); 
        System.out.println("User : " + profile.get(index-1).get(0)); 
        System.out.println("Age : "+profile.get(index-1).get(2)); 
        System.out.println("Address : "+profile.get(index-1).get(3)); 
        System.out.println("Email : "+profile.get(index-1).get(4)); 
        System.out.println("Hobby : "+profile.get(index-1).get(5)); 
        break; 
       case 2: 

        break; 
       case 3: 
        break; 
       case 4: 
        break; 
       case 5: 
        break; 
       case 6: 
        break; 
       case 7: 
        break; 
       } 
        }while(pilihan!=7); 
       } 
      } 
     break; 

     case 2: 
      username = new Vector<String>(); 
      password = new Vector<String>(); 
      umur= new Vector<String>(); 
      alamat= new Vector<String>(); 
      temp_email = new Vector<String>(); 
      hobi = new Vector<String>(); 
     System.out.println("Please fill the data first"); 
     System.out.println("======================================="); 
     System.out.print("Input your username[5..20 | must be Alphanumeric] : "); 
     user=input.nextLine(); 
     username.add(user); 
     System.out.print("Input Your Password[5..20 | must be Alphanumeric] : "); 
     pass=input.nextLine(); 
     password.add(pass); 
     System.out.print("Input your age[17-50] : "); 
     age=input.nextLine(); 
     umur.add(age); 
     System.out.print("Input your address : "); 
     address=input.nextLine(); 
     alamat.add(address); 
     System.out.print("Input your e-mail : "); 
     email=input.nextLine(); 
     temp_email.add(email); 
     System.out.print("Input your hobby : "); 
     hobby=input.nextLine(); 
     hobi.add(hobby); 
     profile.add(username); 
     profile.add(password); 
     profile.add(umur); 
     profile.add(alamat); 
     profile.add(temp_email); 
     profile.add(hobi); 
     System.out.println("Register Successful!"); 
     input.nextLine(); 
     count++; 

     break; 
     case 3: 

     break; 
    } 
    }while(choice!=3); 



} 

} 
+1

在你的問題中添加堆棧跟蹤。 – rajuGT

回答

1

您每次註冊時都重新初始化用戶名。 count變量繼續增加,但您的Vector中只有一個用戶名。