Использование массива в операторе do .... while - PullRequest
1 голос
/ 04 января 2012

Я пытаюсь использовать цикл do ... while, который зацикливается на основе идентификаторов в моем массиве.Я немного новичок в использовании цикла do while, поэтому у меня возникли проблемы с включением массива в объект.Вот мой соответствующий код:

    String studentId   = StringUtils.defaultString(request.getParameter("Student_ID"));
    String studentId1  = StringUtils.defaultString(request.getParameter("Student_ID1"));   
    String studentId2  = StringUtils.defaultString(request.getParameter("Student_ID2"));
    String studentId3  = StringUtils.defaultString(request.getParameter("Student_ID3"));
    String studentId4  = StringUtils.defaultString(request.getParameter("Student_ID4"));
    String studentId5  = StringUtils.defaultString(request.getParameter("Student_ID5"));
    String studentId6  = StringUtils.defaultString(request.getParameter("Student_ID6"));
    String studentId7  = StringUtils.defaultString(request.getParameter("Student_ID7"));
    String studentId8  = StringUtils.defaultString(request.getParameter("Student_ID8"));
    String studentId9  = StringUtils.defaultString(request.getParameter("Student_ID9"));


    String[] studentArray;
    studentArray = new String [15];
        studentArray[0]  = studentId;          studentArray[1]  = studentId1;
        studentArray[2]  = studentId2;         studentArray[3]  = studentId3;
        studentArray[4]  = studentId4;         studentArray[5]  = studentId5;
        studentArray[6]  = studentId6;         studentArray[7]  = studentId7;
        studentArray[8]  = studentId8;         studentArray[9]  = studentId9;


do {
    // blah blah blah
} while (  // Here is where I want to tell it to loop for every student in my array.  It should not run for id's that are empty strings(*if possible));

См. Комментарии для более четкого объяснения. StringUtils.defaultString , который используется при получении моих параметров, выдаст мне пустую строку, если параметр получит NULL .Поэтому, если возможно, я хотел бы принять это во внимание, а не запускать мои операторы "do {}", когда конкретный идентификатор массива представляет собой пустую строку.Заранее спасибо за помощь, и если у вас есть какие-либо вопросы, пожалуйста, задавайте.

Ответы [ 5 ]

5 голосов
/ 04 января 2012

Это лучше сделать, используя для каждого цикла:

for(String x:studentArray){
  // do what you want to do with x
}

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

4 голосов
/ 04 января 2012

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

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

int i = 0; // Some counter to keep track of the index position
do {
    if(!(studentArray[i] == null || studentArray[i] == "")) {
        // Good stuff here
    }
    i++;
} while(i < studentArray.length);
4 голосов
/ 04 января 2012

Использование улучшено для цикла просто

for(String student: studentArray)
{
  if(!student.equals(""))
  {
    //process data
  }
}

ПРИМЕЧАНИЕ: Условие if также может быть записано как !"".equals(student), но в вашемСценарий, поскольку вы уже убедитесь, что идентификаторы никогда не равны null, используя StringUtils.defaultString

1 голос
/ 04 января 2012
int i = 0;
if (studentArray.length > 0) {
    do {
        doSomethingWithArrayElement(studentArray[i]);
        i++;
    } while (i < studentArray.length);
}
0 голосов
/ 04 января 2012
        string[] arr = new string[4]; // Initialize
        arr[0] = "one";               // Element 1
        arr[1] = "two";               // Element 2
        arr[2] = "three";             // Element 3
        arr[3] = "four";              // Element 4

        // Loop over strings
        foreach (string s in arr)
        {
            if (!String.IsNullOrEmpty(s))
            {
                Console.WriteLine(s);
            }
        }

        // do while
        var aValue = "Not Empty";
        do
        {
            //loop through elements here
            for (int a = 0; a < arr.Length; a++)
            {
                aValue = arr[a];
            }

        } while (!String.IsNullOrEmpty(aValue));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...