2016-11-08 3 views
0

私は現在銀行プログラムを書いており、初心者です。私は "login.java"クラスのボタンを持っています。私はボタンを押すことによって実行されるこのクラスのメソッドを作成しました。これは私の方法である:javaの別のクラスからパブリックStringにアクセスできない、nullを出力します

public void LoginPasswordCheck() { 
    int a=0; 
    List<user> Alluser = Baza.GetAllUser(); 
    for (user usr : Alluser) { 
     if (usr.User.equals(jTextFieldUser.getText()) && usr.Password.equals(jPasswordField1.getText())) { 
      try { 
       LastLogin=usr.LastLogin; 
      PreparedStatement prst1 = Baza.CurrentNameSurname(); 
      prst1.setInt(1, usr.idEmployer); 
       ResultSet rs = prst1.executeQuery(); 

       while (rs.next()){ 

        Name = rs.getString(2); 
        Surname = rs.getString(3); 

       } 


      PreparedStatement prst = Baza.UpdateLoginDate(); 
      prst.setInt(1, usr.idUser); 
      prst.execute(); 

      } catch (Exception e) { 
       System.out.println("LoginPasswordCheck metodunda cagirilan UpdateLoginDate metodunda sehv: \n"+e); 
      } 
      new MainEmployer().setVisible(true); 
      setVisible(false); 
      a=1; 
      break; 
     } 
    } 
    if (a==0){ 
    JOptionPane.showMessageDialog(rootPane, "Wrong Login/Password"); 
    } 

} 

私の質問は、私は公共の文字列としてそれらを提示している「名前」と「姓」についてです。その名前と姓を別のクラスの同じパッケージに入れて印刷します:

public MainEmployer() { 
    initComponents(); 
    System.out.println(new Login().Name); 


} 

しかし、それはnullを出力します。私はLogin.javaクラスの異なる行にSystem.out.printlnを書きました。 MainEmployerクラスでは機能しません。

+2

:よう

何か。新しい 'Login'オブジェクトを作成し、デフォルト値' null'を持つ 'Name'を出力するだけです – AhmadWabbi

+2

*新しい*' Login'オブジェクトがなぜ名前を持つと思いますか? – Andreas

+0

私は紙を手にして、私のユーザー名を書きます。それから私は別の紙を手に入れます。なぜこの2番目の作品は私のユーザー名を持っていないのですか? – immibis

答えて

0

メインの雇用主では、新しいオブジェクト(または実際に名前を設定する他の方法)でLoginPasswordCheckメソッドを呼び出す必要があります。それを呼び出さない場合(または実際に名前を設定する他のメソッド)、名前はnullになります。あなたは `main`で` LoginPasswordCheck`を呼び出すことはありません

public MainEmployer() { 
    initComponents(); 
    Login l = new Login(); 
    l.LoginPasswordCheck(); 
    System.out.println(l.Name); 
} 
+0

しかし、ボタンをクリックするとLoginPasswordCheckメソッドが既に実行され、MainEmployerウィンドウ(jFrame)が開きます。メソッドを2回実行するのは正しいですか? – Joshgun

+0

'LoginPasswordCheck'を既に呼びだした場合、あなたは間違っています。' LoginPasswordCheck'は(コードに基づいて)クラス 'Login'のメソッドです。だから、あなたが作成した 'Login'オブジェクトのインスタンスで(この例のように)、そのメソッドを呼び出す必要があります。ログインオブジェクトの他のインスタンスではありません。 – nhouser9

関連する問題