ユーザーが2つの文字列配列(xs、ys)を入力するパズルプログラムを開発しています。各配列からの各要素は、互いに等価です。私は両方の配列を検索し、それを解決するために同様の値を見つけなければなりません。java-check文字列複数の特定の整数/文字のArrayList
私が行ったことは、同等の要素を一緒に含むArrayListを作成することです。しかし、特定の値を見つけるためにArrayListをフィルタリングする必要があります。例えば
、これは、Yは、= 1 1 4 = X = 3であることを意味ユーザ入力 XS = [X、Y 1、X] YS = [3、4、1、3] 場合、x = 3
私が今しなければならないことは、似たような値を含むArrayList(マッチ)をフィルタリングして、1つのタイプの整数しか含まないことを確認することです。 たとえば、ユーザーが次のように入力した場合: xs = [x、y、1、x] ys = [3、4、1、5] xは3と5になることはできません。
私はIF文を使用してコードを書き始めましたが、ユーザーが入力できる値を考慮して、これは効率的ではないことに気付きました。私はまた、私の解決ブール値もオーバーライドできることに気づいた。私は以下の私のコードをコピーした:
ArrayList<String> match = new ArrayList<String>();
for (i = 0; i < size; i++) {
match.add(xs[i]); //filtering equivalent elements
match.add(ys[i]);
for (j = 0; j < size; j++) {
if ((xs[i] == xs[j]) || ys[i] == ys[j] || xs[i] == ys[j] || ys[i] == xs[j]) {
match.add(xs[j]); // adding any other values which are same
match.add(ys[j]);
}
for (t = 0; t < match.size(); t++) {
boolean hasDigit = (match.get(t)).matches(".*\\d.*");
int digit = (-1); // initialising digit
if (hasDigit && digit == (-1)) {
digit = match.get(t); // all integers must be equal to this value to be considered valid
solve = true;
} else if (hasDigit && digit == match.get(t) && digit != (-1)) {
solve = true;
} else if (hasDigit && digit != match.get(t) && digit != (-1)) {
solve = false;
}
}
なって、私はxの3つの整数値持っているので、私は、これは間違っていると思う理由がある(2、5、2)。これは、digit = 2であるためsolve = trueとなり、5!= 2のときはfalseとなりますが、2!= 2の場合はtrueに変わります。しかし、それはまだ無効です。
ありがとうございます。
なぜ、 '-1'の前後にカッコを入れていますか? –
私はそれに慣れています。 – assassinweed2
同様の投稿で私の答えを調べるhttp://stackoverflow.com/a/40099027/3344829 – Saravana