Преобразуйте цикл while в «for» и «do while» - PullRequest
0 голосов
/ 12 июня 2018

Предполагается преобразовать следующий код, который добавляет значения целых чисел из цикла while к for и do while.Мне удалось заставить его работать правильно с циклом «for» и «while», но когда я пытаюсь преобразовать тот же цикл в цикл «do while», я получаю странные числа

import java.util.Scanner;
public class CountLoop{
public static void main (String[] args){
    Scanner in = new Scanner (System.in);
    int i = -1;
    int limit = 0;
    System.out.println("Please enter a number");
    String end1 = in.nextLine();
    int end = Integer.parseInt(end1);



    /*while (i < end){
        i++;
        limit = (i + limit); 
        */


    //for (i = -1; i < end; limit = (i + limit)) i++;{ 

    do {
        limit = (i + limit);
        i++;

    } while ((i < end)); 
    System.out.println("The sum of the numbers in between 0 and " + end + " is i = " + limit);




    }
    //System.out.println("The sum of the numbers in between 0 and " + end + " is i = " + limit);
}

Я сказал, что циклы «while» и «for» работают правильно, поэтому я прокомментировал их, чтобы сосредоточиться на цикле «do while», который дает мне близкие, но неверные значения для вывода.Например, когда я ставлю 100, ожидаемый ответ 5050, но я получаю 4949 по любой причине.Я попытался изменить начальные значения переменных и сделать что-то вроде добавления «конца» обратно, но это все ухудшает.Не уверен, что я сделал не так, но любая помощь приветствуется.

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

Вы должны поменять местами строки, как показано ниже:

do {
    i++;
    limit = (i + limit);
} while ((i < end));

Таким образом, ваш do while будет таким же, как ваш начальный while.

0 голосов
/ 12 июня 2018

Я думаю, while и do while оба будут действовать одинаково в этом случае.Попробуйте это

do {
    i++;
    limit = (i + limit);

} while ((i < end)); 
System.out.println("The sum of the numbers in between 0 and " + end + " is i = " + limit);
0 голосов
/ 12 июня 2018

Цикл while увеличивает i перед добавлением в результат.Это означает, что условие цикла while (i < end) вызовет выход из цикла, когда i будет равно значению end, но конечное значение будет уже добавлено к итогу на последней итерации.

Чтобы получить такое же поведение в цикле do while, измените конечное условие на <=.

do {
    limit = (i + limit);
    i++;

} while (i <= end);

Также измените начальное значение i на 0 или 1.

...