2016-03-07 2 views
0

Например, у меня есть два массива:Java: Как проверить, находятся ли два массива в одном порядке?

String [] arr1 ={"You", "book"}; 
String [] arr2 ={"Do", "You", "like","book" }; 

Я хочу, чтобы проверить, если arr1 соответствует arr2 с точки зрения того же порядка. Если arr1 - {"book", "You"}, то arr1 не соответствует arr2.

Хорошо, я думаю, что мой код не так, но все равно:

for (int i = 0; i<arr1.length; i++){ 
    for (int j=0; j<arr2.length; j++){ 
    if (arr1[i] != arr2[j]){ 
     return null; 
    } 
    } 
} 

Но когда я запускаю его, он всегда возвращает null даже мой arr1 делает матч arr2.

+2

Что вы хотите для 'String [] arr1 = {" а "," b "}, arr2 = {" b "," c "};'? – MikeCAT

+1

Чистые запросы для написания кода не относятся к теме при переполнении стека - мы ожидаем, что вопросы здесь относятся к * конкретным * проблемам программирования, но мы, , с радостью поможем вам сами написать! Сообщите нам [что вы пытались] (http://stackoverflow.com/help/how-to-ask) и где вы застряли. Это также поможет нам лучше ответить на ваш вопрос. –

+0

Поскольку никаких усилий не опубликовано, вот подсказка: вы можете использовать индексы массивов, чтобы сравнить, отображается ли слово в порядке. – jmcg

ответ

0

Увидев, что у меня такое чувство, это какое-то задание, я только собираюсь бросить пару намеков.

Вы в настоящее время выполняете итерации массивов. Это означает, что вы сравниваете каждый элемент с каждым элементом в другом списке. Например:

String[] arr1 = { "a", "b" } 
String[] arr2 = { "a", "b" } 

Благодаря своим двумя петлями, вы сравниваете "а" (arr1[0]) с "а" и "б" (arr2[0] и arr2[1]). То, что вы действительно хотите, это один цикл, и вы сравниваете один и тот же индекс в обоих массивах друг против друга.

В качестве дополнительного наконечника; вы можете закончить цикл, но не посмотрели на каждый элемент в обоих массивах.

Также примечание стороны; использование != для Strings - не самая лучшая идея (см. this question).

1

Вы можете фильтровать элементы в массиве 1, которые не в массиве 2. Этот результат должен соответствовать массив 1.

public static boolean withinAndInOrder(String[] a, String[] b) { 
    return Arrays.equals(a, Arrays.stream(b) 
          .parallel() 
          .filter(element -> Arrays.binarySearch(a, element) >= 0) 
          .toArray()); 
} 
-1
var i=0; 
while(arr1[i] == arr2[i]){ // or while(arr[i].equals(arr2[i])) 
    code to put if where equal 
    i++; 
} 
Смежные вопросы