2016-01-03 30 views
-2

所以我想創建一個程序,爲用戶創建一個新的帳戶,用戶應該能夠'登錄'與同一個帳戶。現在,我已經設法完成第一部分(使用數組創建帳戶),但現在我不知道如何使用該帳戶登錄。我無法登錄到我的帳戶(陣列)在JavaFX

PS:當我說的密碼,它只是彈出

下面的代碼的alertbox:

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.TextField; 
import javafx.scene.control.PasswordField ; 
import javafx.scene.control.Label; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 
public class LoginEN extends Application { 

    Button btnCreate,btnLogin; 
    TextField txtUsername; 
    PasswordField Password; 
    Label lblUsername,lblPassword; 
    int index=0; 
    String[] user = new String[11]; 
    String[] pas = new String[11]; 


    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) { 
     primaryStage.setTitle("Create and login"); 


     btnCreate = new Button(); 
     btnCreate.setText("Create"); 

     btnLogin = new Button(); 
     btnLogin.setText("Login"); 

     txtUsername=new TextField(); 
     txtUsername.setMaxWidth(200); 

     Password=new PasswordField(); 
     Password.setMaxWidth(200); 

     lblUsername=new Label(); 
     lblUsername.setText("Username"); 

     lblPassword=new Label(); 
     lblPassword.setText("Pasword"); 

     btnCreate.setOnAction(e ->{ 
      if (index < 12){ 
      index++; 
      user[index]=txtUsername.getText(); 
      pas[index]=Password.getText(); 

      AlertBox.display("Account information","Your account has been succesfully created: \n Username: " + user[index] + " \n Pasword: " + pas[index] ); 
      txtUsername.clear(); 
      Password.clear(); 
     }else{ 
      AlertBox.display("Error", "You reached the limit."); 
     } 
     }); 
     btnLogin.setOnAction(e ->{ 
      for (int c = 0; c < 11; c++) 
      { 
       if ((txtUsername.equals(user[c])) && (Password.equals(user[c]))) { 
        AlertBox.display("OK", " Welcome to your account"); 
       } 
       break; 
     } 
     }); 
     VBox layout = new VBox(); 
     layout.getChildren().addAll(lblUsername,txtUsername,lblPassword,Password,btnCreate,btnLogin); 
     Scene scene = new Scene(layout, 300, 250); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 


} 

編輯,但仍然無法正常工作:■...

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.TextField; 
import javafx.scene.control.PasswordField ; 
import javafx.scene.control.Label; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 
public class LoginEN extends Application { 

    Button btnCreate,btnLogin; 
    TextField txtUsername; 
    PasswordField Password; 
    Label lblUsername,lblPassword; 
    int index=0; 
    String[] user = new String[11]; 
    String[] pas = new String[11]; 


    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) { 
     primaryStage.setTitle("Create and login"); 


     btnCreate = new Button(); 
     btnCreate.setText("Create"); 

     btnLogin = new Button(); 
     btnLogin.setText("Login"); 

     txtUsername=new TextField(); 
     txtUsername.setMaxWidth(200); 

     Password=new PasswordField(); 
     Password.setMaxWidth(200); 

     lblUsername=new Label(); 
     lblUsername.setText("Username"); 

     lblPassword=new Label(); 
     lblPassword.setText("Pasword"); 

     btnCreate.setOnAction(e ->{ 
      if (index < 11){ 
      user[index]=txtUsername.getText(); 
      pas[index]=Password.getText(); 

      AlertBox.display("Account information","Your account has been succesfully created: \n Username: " + user[index] + " \n Pasword: " + pas[index] ); 
      txtUsername.clear(); 
      Password.clear(); 
      index++; 
      }else{ 
      AlertBox.display("Error", "You reached the limit."); 
      } 
     }); 
     btnLogin.setOnAction(e ->{ 
      for (int c = 0; c < 11; c++) 
      { 
       if ((txtUsername.equals(user[c])) && (Password.equals(pas[c]))) { 
        AlertBox.display("OK", " Welcome to your account"); 
        break; 
       } 

     } 
     }); 
     VBox layout = new VBox(); 
     layout.getChildren().addAll(lblUsername,txtUsername,lblPassword,Password,btnCreate,btnLogin); 
     Scene scene = new Scene(layout, 300, 250); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 


} 
+0

當人們冷靜下來這個帖子,這只是一個問題,我知道這是一個愚蠢的,但至少幫助我,而不是downvoti ng .. – TinaXx

+0

我想指出,這個得到低投票的原因(最可能)是因爲你的問題有點含糊。關於「我不知道如何使用該帳戶登錄」的含義並不清楚。 現在你的問題;我立即注意到的一件事是你的索引問題(仍然)。如果只有11個用戶,則代碼如下所示: if(index <11)需要:if(index <10)因爲如果索引爲10,表示已有11個用戶(計數爲0)。你的for循環沒問題。 –

回答

0

if (index < 12){ 
    index++; 
    user[index]=txtUsername.getText(); 
    pas[index]=Password.getText(); 

    AlertBox.display("Account information","Your account has been succesfully created: \n Username: " + user[index] + " \n Pasword: " + pas[index] ); 
    txtUsername.clear(); 
    Password.clear(); 
} 

您的第一個帳戶在user[1]創建的,因爲你這樣做

user[index]=txtUsername.getText(); 
pas[index]=Password.getText(); 

因此,有犯規之前增加'指數」存在於user[0]的用戶,但在

for (int c = 0; c < 11; c++) 
{ 
    if ((txtUsername.equals(user[c])) && (Password.equals(user[c]))) { 
     AlertBox.display("OK", " Welcome to your account"); 
    } 
    break; 
} 

你開始檢查用戶在索引0處,並在if之後,您離開循環break;,因此您從不檢查索引1到10處的任何用戶。 還將txtUsernamePassword與字符串中的字符串進行了比較,但是txtUsernamePassword是inputfields,它永遠不會等於任何字符串。

另外,你的用戶和密碼陣列具有長度11,所以他們的最高指數爲10,但在

if (index < 12) 

您檢查指數低於12,並增加了,所以你使用的索引可以12,如果您創建的用戶超過10個,則會導致IndexOutOfBoundsException

要分配後解決這個問題,增量指標,如果裏面的

user[index]=txtUsername.getText(); 
pas[index]=Password.getText(); 
index++; 

突破和比較文字,而不是域本身

if ((txtUsername.getText().equals(user[c])) && (Password.getText().equals(user[c]))) { 
    AlertBox.display("OK", " Welcome to your account"); 
    break; 
} 

並檢查指數低於11

if (index < 11) { 
    ... 
} 
+0

正如你所看到的,我編輯了我的程序,但它仍然沒有工作壽:我很抱歉,這可能是一個愚蠢的事情了.. – TinaXx

+0

你用'[c]'比較'txtUsername'和用'pas [c]'輸入密碼', 第一個是Inputfields,第二個是字符串,它們永遠不會相等。 只需將'txtUsername.equals(..)'更改爲'txtUsername.getText()。equals(..)' ,並使用'Password'完成相同操作。 – mrBrown

+0

現在有用,謝謝! – TinaXx

相關問題