これは正常に動作するため、この問題が完全に書き換えられています。Javaのstring.matches()メソッドで同じ値を2回一致させないようにしてください。
は、私は次の二つの数字(shouldPassTestとshouldFailTest)同じ数字であれば、異なる10Sの場所で知りたい567
の値と数、testNumberがあるとします。あなたは、各桁が使用可能な数字の範囲からテストされていることであることを実行したときに何が起こる
int testNumber = 567;
int num1 = 5;
int num2 = 6;
int num3 = 7;
int shouldPassTest = 756;
int shouldFailTest = 777;
if(Integer.toString(shouldPassTest).matches("[5,6,7][5,6,7][5,6,7]")
{
//Do some cool stuff
}
if(Integer.toString(shouldFailTest).matches("[5,6,7][5,6,7][5,6,7]")
{
//Do some cool stuff
}
(5、6、および7):
は、だからここのコードです。理論的には、shouldFailTest は、実際にテストに合格する必要があります。 3回ではあるが、どのように7が3つの基準の1つに一致するかを見てください。
しかし、何が起こるかは、テスト時に777がfalseを返すことです。これはまさに私のコードで欲しかった結果ですが、なぜそれが起こったのかを知りたいのですが、です。マッチメソッドテストは、各番号が1回だけ一致することを確認しますか?
ありがとうございます!
この投稿は高度に編集されています。私のコードを実行した後、私はこのメソッドが私が欲しいものを正確に実行していることを発見しましたが、今はその理由を知りたいのです。ありがとう。
あなたは1つの番号が別のアナグラムであるかどうかを確認するために探しているように聞こえます。 – azurefrog
"異なる解決策"。 'Integer.toString'を使用した後、文字列を文字に分解し、配列を使用して文字を保持します。その後、配列から要素を削除することができます。 'Set'を使う方が良いでしょうが、あなたの数字が同じ数字の複数を持つことができればうまくいきません。しかし、正規表現でこれを解決しようとしないでください。 – ajb
はい、奇妙なことに、コードはまさに私が望むものです。 777はfalseを返します。今私は楽しく驚いて混乱しています。 –