String.length()は私に間違った値を与えます

10文字未満のパスワードを入力すると、パスワードが表示されますPassword cannot exceed 10 characters

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String name = Name.getText();
        String Username = uName.getText().toString();
        String Pass1 = uPass.getPassword().toString();
        String Confirm = uConfirm.getPassword().toString();
        String Status = "OFFLINE";
        int PassLen = Pass1.length();

        if (Username.equals("") || Pass1.equals("") || Confirm.equals("") || name.equals("")) 
        {
            JOptionPane.showMessageDialog(null, "You cannot leave any fields blank when creating an Account. Please Try Again");
        } 
        else if ((uPass.getPassword().toString()).length()>10)
        {
            uPass.setText("");
            uConfirm.setText("");
            JOptionPane.showMessageDialog(null, "Password cannot exceed a maximum of 10 characters.");  
        }
        else if (!Pass1.equals(Confirm))
        {
            uConfirm.setText("");
            lblError1.setText("Passwords Do Not Match.");
            lblError2.setText("Please re-enter your Password.");
        }
        else
        {
            try {
                DB_Connect connect = new DB_Connect();
                ResultSet rs = connect.queryTbl("SELECT * FROM ACOUNTS");
                boolean AlreadyUser = false;
                String User;
                while (rs.next())
                {
                    User = rs.getString("Username");
                    if(Username.equals(User))
                    {
                        AlreadyUser = true;
                    }
                }
                if (AlreadyUser==false)
                {
                    connect.updateTbl("INSERT INTO NBUSER.ACCOUNTS (USERNAME,PASSWORD,STATUS,NAME)VALUES ('"+Username+"','"+Pass1+"','"+Status+"','"+name+"')");
                    JOptionPane.showMessageDialog(null, "Account Created Successfully !");
                    this.dispose();
                    new Topics().setVisible(true);
                }
                else
                {
                    JOptionPane.showMessageDialog(null, "The Username you have selected already exists. Please select a different Username");
                    uPass.setText("");
                    uConfirm.setText("");
                }
            } catch (SQLException ex) {
                Logger.getLogger(CreateAccount.class.getName()).log(Level.SEVERE, null, ex);
            }

        }


    }                                        
トム

明らかにSwingを使用しているJPasswordFieldため、パスワードにを使用している可能性も非常に高くなります。では、getPassword実際に何が行われるのか見てみましょう

public char[] getPassword()

このTextComponentに含まれるテキストを返します。基になるドキュメントがnullの場合、NullPointerExceptionが発生します。セキュリティを強化するために、使用後に各文字をゼロに設定して、返された文字配列をクリアすることをお勧めします。

戻り値:テキスト

ご覧のとおり、はでパスワードを返します。char[]このクラスは結果のtoString呼び出しをオーバーライドしないuPass.getPassword().toString()ため、次のようになります。

[C @ 1d44bcfa

これはを呼び出した結果ですObject#toString

この文字列の長さは11であるため、10より大きくなり、else ifブロック(else if ((uPass.getPassword().toString()).length()>10))が入力されます。

これを修正するには、次のようなStringコンストラクターを呼び出しますString(char[])

String Pass1 = new String(uPass.getPassword());

これを現在の問題の「クイックフィックス」として使用し、最初に返されたを使用する方法を見つけてくださいchar[]引用されたJavaDocで述べられているように、char配列は使用後に「クリーン」にすることをお勧めします。そのため、パスワードはそこに保存されなくなります。を使用して配列から文字列を作成することにより、パスワードを含み、そこから削除する必要がある別のオブジェクトをヒープ内にnew String(uPass.getPassword())作成します。だからそれはあなたのためにより多くの仕事を追加するでしょう。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

XSLT:string-length($ variable)は間違った答えを出します

分類Dev

私は、文字列が数値values.For元を持つ入力間違った答えを得ていますpallindrome string.Iをチェックする必要があります。「0P」を

分類Dev

String.formatは間違った時間を出力します

分類Dev

getJSONと$ .eachは私に間違った値を与えます

分類Dev

2単語の長さを追加すると、間違った答えが生成されます(string0.length()+ string1.length())

分類Dev

Convert.ToInt32(string)が間違った値を与える

分類Dev

vs2015で間違った値を与える標準ライブラリto_string(double)。解決策はありますか?

分類Dev

atanfは私に間違った答えを与えます

分類Dev

CakePhpConfig.timezoneは私に間違った時間を与えます

分類Dev

新しいDate()は私に間違ったGMTを与えます

分類Dev

jQuery .on()は私に間違った「これ」を与えています

分類Dev

秒単位の時差は私に間違った答えを与えます

分類Dev

ifelse()は私に間違った出力を与えました

分類Dev

Java:間違った文字を返すIndexOf(String string)

分類Dev

nextLineメソッドは私に間違った実装を与えています

分類Dev

jquery getday()は私に間違った日を与えていますか?

分類Dev

Arduinoは私に間違った番号を教えてくれます

分類Dev

std :: get_time:間違った結果を使用してtime-stringをstd :: time_tに変換します

分類Dev

出力は正しいですが、SPOJは私に間違った答えを与えました

分類Dev

私のifステートメントは私に間違った出力を与えます

分類Dev

私のコードはcodechefで間違った答えを与えています

分類Dev

:after要素のAngular MouseEventは、event.toElement.clientWidthに間違った値を与えます

分類Dev

偶数の平均は、バック間違った値を与えます

分類Dev

パンダgroupbyは間違った値を与えます

分類Dev

R.id.homeは間違った値を与えますか?

分類Dev

Pythonの「string」と「string」の間に違いはありますか?

分類Dev

それは常に正しいと言っています。私は何を間違えたのですか?

分類Dev

Calendar.getInstance()は私に間違った時間を与えます私が尋ねているときによって異なります

分類Dev

私の簡単なボタンは間違った量の色を与えます

Related 関連記事

  1. 1

    XSLT:string-length($ variable)は間違った答えを出します

  2. 2

    私は、文字列が数値values.For元を持つ入力間違った答えを得ていますpallindrome string.Iをチェックする必要があります。「0P」を

  3. 3

    String.formatは間違った時間を出力します

  4. 4

    getJSONと$ .eachは私に間違った値を与えます

  5. 5

    2単語の長さを追加すると、間違った答えが生成されます(string0.length()+ string1.length())

  6. 6

    Convert.ToInt32(string)が間違った値を与える

  7. 7

    vs2015で間違った値を与える標準ライブラリto_string(double)。解決策はありますか?

  8. 8

    atanfは私に間違った答えを与えます

  9. 9

    CakePhpConfig.timezoneは私に間違った時間を与えます

  10. 10

    新しいDate()は私に間違ったGMTを与えます

  11. 11

    jQuery .on()は私に間違った「これ」を与えています

  12. 12

    秒単位の時差は私に間違った答えを与えます

  13. 13

    ifelse()は私に間違った出力を与えました

  14. 14

    Java:間違った文字を返すIndexOf(String string)

  15. 15

    nextLineメソッドは私に間違った実装を与えています

  16. 16

    jquery getday()は私に間違った日を与えていますか?

  17. 17

    Arduinoは私に間違った番号を教えてくれます

  18. 18

    std :: get_time:間違った結果を使用してtime-stringをstd :: time_tに変換します

  19. 19

    出力は正しいですが、SPOJは私に間違った答えを与えました

  20. 20

    私のifステートメントは私に間違った出力を与えます

  21. 21

    私のコードはcodechefで間違った答えを与えています

  22. 22

    :after要素のAngular MouseEventは、event.toElement.clientWidthに間違った値を与えます

  23. 23

    偶数の平均は、バック間違った値を与えます

  24. 24

    パンダgroupbyは間違った値を与えます

  25. 25

    R.id.homeは間違った値を与えますか?

  26. 26

    Pythonの「string」と「string」の間に違いはありますか?

  27. 27

    それは常に正しいと言っています。私は何を間違えたのですか?

  28. 28

    Calendar.getInstance()は私に間違った時間を与えます私が尋ねているときによって異なります

  29. 29

    私の簡単なボタンは間違った量の色を与えます

ホットタグ

アーカイブ