Вложено для петель - PullRequest
       25

Вложено для петель

1 голос
/ 27 октября 2011

У меня неплохое новичок в понимании регулярных циклов for, но у меня возникают проблемы с тем, чтобы обернуть голову вокруг вложенных циклов в Java.

В проблеме, над которой я работаю, у меня есть постоянное целое число, которое является максимальным числом, и затем я прошу пользователя ввести 4 разных числа. Из этих 4-х входов я пытаюсь определить, какой из них я могу поместить «внутри» константного целого числа, которое я объявил.

IE: если постоянное целое число равно 30, а пользователь вводит 5, 9, 3 и 21, он скажет им, что они могут использовать только 5, 9 и 3, потому что 21 будет слишком большим для добавления.

Проблема в форме истории заключается в том, что у пользователя есть рюкзак, который вмещает определенное количество веса. Программа просит пользователя ввести 4 различных веса предметов, а затем решает, какие предметы он может уместить в сумке.

Это для школьного проекта, поэтому я должен использовать вложенные циклы.

Ответы [ 3 ]

1 голос
/ 27 октября 2011

Я не делал никакой JAVA, но я знаю, что C # почти такой же.

Я бы сделал так:

int max = 30;
int value = 0;
int counter = 0;
int[] input[4] = new int[5, 9, 3, 21];
bool[] canAddInput[4] = new bool[false, false, false, false];

for(value; value <= max; )
{
    for(counter; counter < 4; counter++)
    {
         value += input[i];
         if(value<=max)
             canAddInput[i] = true;
    }

    if(counter >= 4)
        Break;
}
1 голос
/ 27 октября 2011

Любой простой способ думать о вложенных циклах for - игнорировать тот факт, что они являются вложенными. По соглашению вы обычно будете использовать i для счетчика приращения внешнего цикла и j для внутреннего цикла, что является наиболее важной вещью в начале. Если для вас это может привести к путанице, вам, вероятно, будет полезно использовать больше описательных имен для переменных приращения, чем буквы «i» и «j», например outer и inner.

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

0 голосов
/ 27 октября 2011

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

int i, j;
for (i=0; i <= 9; i++)
{
    for (j=0; j <= 9; j++)
    {
        System.out.println(i+""+j)
    }
}

Выходные данные - это числа от 00 до 99. Вы можете записать выходные данные цикла в документ или что-то еще, чтобы увидеть, как он работает.Давайте возьмем пример этого цикла, у вас есть такой вывод:

00 //here your program entered the outer loop, i has now the value 0, after that, you enter to the inner loop, i remains 0, but j will change in the next iteration
01 // you are still in the first iteration of the outer loop, but the inner loop is on the second
02 // and so on ....
03
04
05
06
07
08
09 // ... until the inner loop finished looping
10 // once the inner loop finished looping, the outer loop changes again, and we are back to the inner loop

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

...