2013-11-18 7 views
0

Я хотел добавить переменную в цикл, но я не хочу, чтобы она выходила за пределы (на второй итерации y было бы 200) значение x, я хочу, чтобы y достигло x, но с добавлением параметра из 100 вначале, как я могу это достичь?Добавление в цикл while

int x = 130; 
int y = 0; 
while(y<x) 
{ 
    y += 100; 
} 
+2

Если вы хотите, чтобы y закончил равномерно x, тогда введите y = x; если это неприемлемо, нам нужно больше деталей –

+1

Я не понимаю, что вы ищете. Если вы не хотите идти за пределы x, почему ваша вторая итерация будет равна 200? Вы хотите сделать 130 итераций цикла? Если это так, вы должны использовать 'for loop'. –

+0

Спасибо за комментарии, но это всего лишь пример, у меня есть большое число, которое я хочу, чтобы мое второе число получало именно его на некоторых уровнях (например, добавление 100000), потому что я использую второе значение. – Memento

ответ

1

Вы могли бы просто используйте , если заявление здесь. Это просто и хорошо читаемо, но далеко не самое короткое решение. Здесь вы найдете:

// Define your variables 
int x = 130; 
int y = 0; 

    while(y < x) { 
     // Check if y would be greater than x if you added 100 to it 
     if (y + 100 > x) 
      // If so, we won't add 100 to y. We'll just assign x to y. 
      y = x; 
     else 
      // If not, we can safely add 100 to it. 
      y += 100; 
    } 

Cheers! :)

+0

Ваш код буквально эквивалентен 'y = x;' – Cruncher

+0

В этом условии y никогда не попадет в x, я хочу, чтобы y, который попадает в некоторые итерации, например, первый y + = 100, затем y + = 30, чтобы достичь x – Memento

+0

@Memento это неверно. 'if (y + 100> x) // Если это так, мы не добавим 100 к y. Мы просто назначим x y. y = x; 'y = x эффективно добавит 30 – Cruncher

6

Измените ваш while (y < x) на while (y + 100 < x).

EDIT:

Возможно, вы ищете это:

int x = 130; 
int y = 0; 
int addValue = 100; 
while(y + addValue < x){ 
    y += addValue; 
} 
y = x; 
+0

в этом состоянии y никогда не попадет в x, я хочу, чтобы y, который попадает на некоторую итерацию, как и первый y + = 100, тогда y + = 30, чтобы достигнуть x – Memento

+0

@Memento, что логика будет буквально эквивалентна 'y = x;' – Cruncher

+1

Почему вы не можете просто установить 'y = x'? – SimplyPanda

3

Более эффективный способ для достижения того же является (при условии х всегда положительна):

y = x/100 * 100; 
Смежные вопросы