0

そのため、アカウント名のリストをチェックして、オペレーターが入力したユーザー名がデータベースにあるかどうかを確認しようとしています。現時点で私は持っています:

for(int i = 0; i < rowCount; i ++){
            System.out.println("Stored in array:" + accounts[i+1]);
            System.out.println("name entered:" + LoginPage.usrname);
            if(accounts[i+1] == LoginPage.usrname){
                System.out.println("match");
            }else{
                System.out.println("no match");
            }
        }

indexOf 文字列などをいじってみましたが、何も機能しません。簡単な解決策があると確信していますが、見つけるのに苦労しているだけです。String 配列のインデックスを String 変数と比較できない理由がわかりません。

4

2 に答える 2

2

これはあなたが探しているものです:

if(acounts[i+1].equals(LoginPage.usrname))

==演算子 on Stringsinを使用してJavaも、思ったとおりに動作しません。の内容を比較するのではStringsなく、メモリ内のアドレスを比較します。このequalsメソッドは、の内容を比較しStringsます。


覚えておくのに役立つかもしれないメモとして、これは について特に特別なことではありませんStringsStringsはオブジェクトでありJava、 を使用==して ANY タイプのオブジェクトを比較すると、同じ問題が発生します。作成したカスタム クラスの 2 つのオブジェクトの内容を比較する場合は、そのクラスのメソッドを作成する必要がありますequalsStringsまったく同じように動作します。

于 2013-11-07T22:50:31.813 に答える