1

重複の可能性:
Java で文字列を比較するにはどうすればよいですか?

(これは重複している可能性があり.equalsます。私は気づいていませんでした。申し訳ありません。)

4文字の文字列ジェネレーターを作ることにしたとき、私は今日Javaをいじっていました。私が定義したすべての可能な文字の組み合わせをプログラムに生成させます。これはプロジェクト用ではありません。これが可能かどうかを確認したかっただけです。私の問題は文字列チェックにあります。最初にコードを投稿します。

String text = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
char[] chars = text.toCharArray();
String name = "Mike";
String pass;

outerLoop:
for (int a = 0; a < chars.length; a ++) {
    for (int b = 26; b < chars.length; b++) {
        for (int c = 26; c < chars.length; c++) {
            for (int d = 26; d < chars.length; d++) {
                pass = chars[a]+""+chars[b]+""+chars[c]+""+chars[d];
                System.out.println(pass);
                if (pass == name){
                    System.out.print("password");
                    break outerLoop;
                }
            }
        }
    }
}

ネストされたものは、マイクと等しいifかどうかをチェックします。passそうであれば、パスワードを出力し、for ループを中断します。

  • pass = chars[a]...これを行う正しい方法はありますか?なしでテストしたところif、パスを印刷したところ、すべての組み合わせが正しく印刷されました。は印刷されMikeましたが、 に引っ掛かりませんでしたif
  • また、小さな変更を加えたときにプログラムの実行に時間がかかっていたため、ネストされたforループを小文字で開始するように変更しました。
4

3 に答える 3

10
            if (pass == name){

する必要があります

            if (pass.equals(name)){

String.equals()メソッドを使用して、文字列が等しいかどうかを確認します。==演算子は、2 つの参照変数が同じオブジェクトを参照しているかどうかを単純にチェックします。equals()メソッドは、2 つの文字列が意味的に等しいかどうかをチェックします。

于 2012-12-16T22:03:22.253 に答える
0

文字列は equals() を使用して比較する必要があります

于 2012-12-16T22:05:31.867 に答える
0

これは、少なくとも 1 日に 1 回発生します。それ専用の「近い質問」オプションがあるはずです。とはいえ、ここからがまた…。

この==演算子は、2 つのオペランドが同じインスタンスかどうかをテストします。

このメソッドは 2 つのオペランドの.equals()を比較しますが、クラスがこのメソッドを実装している(実装している) 場合に限ります。String==Object

于 2012-12-16T22:08:54.410 に答える