2016-09-07 4 views
-1

を読んでいないだろう。BufferedReaderのは、私は、ユーザー名とパスワードがテキストファイルであり、テキストファイルは次のようになりますプログラム持って

election:12345 

を、私は、ファイルを読むためにこのコードを持っている

try { 
    BufferedReader read=new BufferedReader(new FileReader("election_un_pass.txt")); 
    String line=""; 

    while((line=read.readLine())!=null) { 
     String [] info=line.split(":"); 

     if(info[0].matches(Login.uname) && info[1].matches(Login.pass)){ 
      new Main(); 
     } else { 
      JOptionPane.showMessageDialog(null, "Username or Password might not be correct"); 
     } 
     Login.txtUName.setText(""); 
     Login.txtPassword.setText(""); 
    } 
} catch (Exception e1) { 
    e1.printStackTrace(); 
} 

入力したユーザー名とパスワードが正しくても、プログラムを実行するたびにUsername or Password might not be correctメッセージが表示され、new Main()は表示されません。

+0

一致していないと思われるLogin.unameとLogin.pass値を確認してください。 –

+1

あなたは 'String.equals'を使いたくないのですか?そして、 'Login'の値は何ですか? – Marvin

+0

@VuralAcarああ、実際には一致していて、Login.unameとLogin.passはtxtUName.getText()とtxtPassword.getText()に初期化されていますが、私はちょうどtxtUName.getText()とtxtPasswordを使用しました。 getText()。どうもありがとうございます!!!! – luh

答えて

0

あなたは可能性:

  1. は、使用しているものは何でもIDEでデバッグする方法を学びます。デバッグモードでは、一度に1行ずつコードを実行し、各ポイントの変数の値を見ることができます。
  2. エラーは、コンソール/ログ/ダイアログに印刷することができたとえば

をoccurrs時にログ情報を増やします

String msg = String.format("could not find user name: [%s] and password: [%s] in line: [%s]", Login.uname, Login.pass, line); 

を明らかにあなたはどこでも、予想されるユーザー名とパスワードを印刷してはいけませんセキュリティ上の理由から不正な値が入力されたときに、間違っていることを知るための素早い方法かもしれません:)それはどこかの後ろの空白文字やどこかの間違った大文字のように単純なものです。

0

String.matches(regex)をあなたの比較に使用してもよろしいですか?引数は正規表現とみなされ、Login.unameまたはLogin.passの正規表現メタ文字はすべて正規表現として解釈されます。これは、あなたの試合が予想外のやり方で機能するかもしれないことを意味します。

私はあなたが本当に言いたい疑う:代わりに

if (info[0].equals(Login.uname) && info[1].equals(Login.pass)) { 

関連する問題