Как распечатать 2 массива разной длины, но с одинаковым типом данных, используя один цикл в java?

Я пробовал это

public static void main(String[] args) throws ArrayIndexOutOfBoundsException
{
int arr1[]= {1,2,3,4,5};
int arr2[]= {6,7};
for(int i=0;i<arr1.length;i++)
   {
     System.out.println(arr1[i]);
     System.out.println(arr2[i]);
   }
}

но это не работает.

Было бы полезно, если бы вы поделились ошибкой, которую он выдает. Глядя на ваш код, поскольку arr1 длиннее, чем arr2, цикл будет продолжать проходить длину arr2, где отсутствуют элементы, что приведет к сбою.

cluskii 11.04.2018 14:16

Также было бы полезно, если бы мы знали, каков ожидаемый результат

Th0rndike 11.04.2018 14:17

Я бы проголосовал против, если бы мог ...

CannedMoose 11.04.2018 14:18
5
4
67
5

Ответы 5

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

public static void main(String[] args) throws ArrayIndexOutOfBoundsException
{
int arr1[]= {1,2,3,4,5};
int arr2[]= {6,7};
int max = arr1.length;
if (max < arr2.length){
  max = arr2.length;
}
for(int i=0;i<max;i++)
   {
     if (i < arr1.length){
       System.out.println(arr1[i]);
     }
     if (i < arr2.length){
       System.out.println(arr2[i]);
     }
   }
}

Итерируйте цикл до максимальной длины двух массивов и печатайте только те элементы массива, индекс которых действителен.

public static void main(String[] args) throws ArrayIndexOutOfBoundsException
    {
    int arr1[]= {1,2,3,4,5};
    int arr2[]= {6,7};
    for(int i=0;i<Math.max(arr1.length, arr2.length);i++)
       {
         if(i<arr1.length)
             System.out.println(arr1[i]);
         if(i<arr2.length)
             System.out.println(arr2[i]);
       }
    }

Попробуйте, это сработает, я думаю

int arr1[]= {1,2,3,4,5};
int arr2[]= {6,7};
int a1 = arr1.length();
int a2 = arr2.length();
int n = a1 > a2 ? a1 : a2;
for(int i = 0; i < n; i++) {
    if(a1 > i) 
        System.out.println(arr1[i]);
    if(a2 > i) 
        System.out.println(arr2[i]);
}

Удачи

Или, чтобы распечатать их один за другим:

  int arr1[]= {1,2,3,4,5};
  int arr2[]= {6,7};

  for (int i=0; i < arr1.length + arr2.length; ++i)
  {
     if (i < arr1.length)
         System.out.println (arr1 [i]);
     else 
         System.out.println (arr2 [i - arr1.length]);
  }

Вы можете использовать приведенный ниже код. Вы по-прежнему можете встретить условие, при котором оба массива имеют одинаковую длину. Это будет работать, только если массивы имеют разную длину.

public static void main(String[] args) throws ArrayIndexOutOfBoundsException
{
    int arr1[]= {1,2,3,4,5};
    int arr2[]= {6,7};
    int arr1Length = arr1.length;
    int arr2Length = arr2.length;
    if(arr1.length>arr2.length)
    {
        for(int i=0;i<arr1.length;i++)
           {
             System.out.println(arr1[i]);
                if(i<arr2.length)
                {
                System.out.println(arr2[i]);
                }
                else continue;
       }
    else{
            for(int i=0;i<arr2.length;i++)
               {
                if(i<arr1.length)
                {
                 System.out.println(arr1[i]);
                }
                else continue;
                 System.out.println(arr2[i]);
               }
    }

}

Другие вопросы по теме