java: Как получить внутренние данные внутри цикла for

#java #for-loop

#java #for-loop

Вопрос:

 public void two(final BeanForm[] captureddata)
{
  for (BeanForm form : captureddata) 
  {
    if (form.getCyclicType() != null) 
    {
      logger.info("The Cyclic Type is"  form.getCyclicType().value());
    }

    if (form.getTicketType() != null) 
    {
      logger.info("The Ticket Type is"  form.getTicketType().value());
    }
  }
}
  

Приведенный выше код работает нормально, но результат, который я вижу в файле журнала, является (в случае, если длина формы BEAN равна 2)

 11/Nov/2011 20:15:51   - The Cyclic Type is  DTI
11/Nov/2011 20:15:51   - The Ticket Type is MMTS
11/Nov/2011 20:15:51   - The Cyclic Type is DTI
11/Nov/2011 20:15:51   - The Ticket Type is MMTS
  

Я просто хотел знать, возможно ли также получить сведения о массиве, например, к какому массиву принадлежат эти данные
Например

 The array[1]  Cyclic Type is  DTI 
The array[2]  Cyclic Type is  SAG
  

Комментарии:

1. Вам пришлось бы изменить свой цикл, чтобы использовать индекс. Кстати; индексы массива начинаются с 0, а не с 1.

Ответ №1:

Просто используйте внешний счетчик:

 public void two(final BeanForm[] captureddata)
{
  int count = 0;

  for (BeanForm form : captureddata) 
  {
    if (form.getCyclicType() != null) 
    {
      logger.info(count   " The Cyclic Type is"  form.getCyclicType().value());
    }

    if (form.getTicketType() != null) 
    {
      logger.info(count   " The Ticket Type is"  form.getTicketType().value());
    }

    count  ;
  }
}
  

или как обычный цикл for

 public void two(final BeanForm[] captureddata)
{
  for (int i=0; i<captureddata.length; i  )
  {
    BeanForm form = capturedata[i];

    if (form.getCyclicType() != null) 
    {
      logger.info(i  " The Cyclic Type is"  form.getCyclicType().value());
    }

    if (form.getTicketType() != null) 
    {
      logger.info(i  " The Ticket Type is"  form.getTicketType().value());
    }
  }
}
  

Ответ №2:

Если вы имеете в виду индекс в цикле — нет. Вам нужно будет сделать это явно:

 for (int i = 0; i < capturedData.length; i  )
{
    BeanForm form = capturedData[i];
    // Now you have both form and i.
}
  

Ответ №3:

Один из возможных подходов заключается в поддержании счетчика в цикле for, и вы можете использовать счетчик вместе с массивом[], что-то вроде:

 int i=0;
for-each loop
{
    //print array[i]
    //increment i
}
  

Ответ №4:

 public void two(final BeanForm[] captureddata)
{
    for (i = 0; i < captureddata.length(); i  ) {
        BeanForm form = captureddata[i]
        if (form.getCyclicType() != null) 
        {
            logger.info("The array[" i "] Cyclic Type is"  form.getCyclicType().value());
        }

        if (form.getTicketType() != null) 
        {
            logger.info("The array[" i "] Ticket Type is"  form.getTicketType().value());
        }
    }
}
  

Ответ №5:

согласитесь с решением Мэтью, просто используйте другое число для подсчета и сделайте приращение в конце цикла.

однако в файле журнала обратите внимание, хотите ли вы начать с «array [0]» или «array[1]»

Комментарии:

1. Большое спасибо, вы, люди, всегда были полезны, как обычно. этот сайт stackoverflow был раем для разработчиков.