Я пытаюсь написать тот же цикл, чтобы вычислить сумму целых чисел от 1 до входного значения и вывести сумму тремя разными способами, и до сих пор я правильно завершал свои циклы for и while и выводил их такой же результат. Однако по какой-то причине мой цикл do-while не работает должным образом, и вместо сложения суммы всех чисел он просто добавляет единицу к пользовательскому вводу. Может ли кто-нибудь помочь мне понять, как заставить его правильно копировать процесс других моих циклов? Прилагается мой код.

import java.util.Scanner;
public class CountLoop{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int total = 0;
        int total2 = 0;
        int total3 = 0;
        int n = 0;
        
        System.out.println("Please input a positive integer");
        int input = sc.nextInt();

        System.out.println("while loop:");
        while(n<=input){
            total += n;
            n++;
            System.out.println(total);
        } 
        
        System.out.println(" ");
        
        System.out.println("for loop:");
        for(n = 0; n <= input; n++){
            total2 += n;
            System.out.println(total2);
        }

        System.out.println(" ");
        
        System.out.println("do while loop:");
        do {
            total3 += n;
            n++;
            System.out.println(total3);
        } while(n<=input);

    }
}
0
Cameron Cross 27 Сен 2022 в 22:00
1
Вы не сбрасываете n между циклами.
 – 
0x5453
27 Сен 2022 в 22:02

2 ответа

Лучший ответ

Перед вашим "do... while()" вы должны установить n равным 0, иначе n равно введенному числу плюс один. Если вы это сделаете, вы получите тот же ответ.

        System.out.println("do while loop:");
        n = 0;
        do {
            total3 += n;
            n++;
            System.out.println(total3);
        } while(n<=input);

Совет: по возможности избегайте использования переменной в нескольких местах и ​​используйте долгоживущие переменные (особенно когда они изменяемы).

Например, for (n=0; n<input; n++) можно заменить на for (int i=0; i<input; i++), чтобы избежать использования существующей переменной и избежать сложного состояния.

0
funkygono 27 Сен 2022 в 22:13

Между циклом for и циклом do while вы не сбрасывали значение n. Он по-прежнему равен вводу из-за цикла for

0
Portal 27 Сен 2022 в 22:03