Ваши имена переменных указывают на основной запах кода. Похоже, вместо шести переменных у вас должно быть два массива, каждый из которых содержит три строки. Другими словами, что-то вроде этого изначально было бы намного лучше:
<code>String[][] strs = new String[2][3];
strs[0][0] = str11;
strs[0][1] = str12;
...
Скорее всего, в зависимости от того, откуда вы получили шесть строк, вам не нужно будет делать это вручную непосредственно перед сравнением, но, скорее всего, вы можете передать свои аргументы в более удобном формате.
Если вы хотите сделать это путем сравнения массивов строковых объектов и используете Java 1.5 или выше, помните, что у вас есть доступ к методам java.util.Arrays.equals () для равенства массива. Максимально возможное использование библиотечных методов - отличный способ избежать лишних усилий, изобретающих колесо, и возможных ошибок реализации (например, в обеих представленных реализациях есть ошибки).
Точный маршрут, который вы выбираете, вероятно, зависит от домена, для которого вы пишете - если ваша конкретная проблема требует, чтобы вы всегда сравнивали три кортежа, то написание кода для явного сравнения групп из трех строк не было бы такой хорошей идеей, поскольку это, вероятно, будет более понятным, чем код, сравнивающий массивы произвольной длины. (Если вы идете по этому маршруту, то, конечно, мы будем использовать единственное условие if () с && вместо вложенных блоков if, как продемонстрировал Адам Беллер).
В общем, у вас будет гораздо более пригодный для использования блок кода, если вы настроите его для работы с массивами произвольной длины.