Java soma de nÚmeros consecutivos

Galera to com uma duvida, me ajudem !!

Faça um algoritmo para ler um valor A e um valor N. Imprimir a soma dos N números
consecutivos a partir de A (inclusive). Enquanto o valor de N for negativo ou ZERO, seu
algoritmo deve pedir um novo N (somente o N) para o usuário.
Por exemplo, se A for igual a 5 e N for igual a 3, então seu algoritmo deve somar os 3
números consecutivos a partir de A, que seriam: 5 + 6 + 7 = 18.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main
{
    public static void main(String[] args)
    {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        
        
        //primeiro, vamos declarar as variáveis A e N;
        int a = 0;
        int n = 0;
        
        System.out.println("Bem vindo.\nEste programa pede ao usuário que forneça um"
            + "valor A e um segundo valor N,\n"
            + "e como resultado, exibe a soma dos N inteiros consecutivos a A");
        
        
        
        //vamos ler o valor de A.
        //vamos ler seja lá o que for que o usuário digitar,
        //e tentar converter para um inteiro.
        boolean haveValue = false;
        do
        {
            try
            {
                System.out.println("Por favor, forneça o valor de A:");
                String userInput = bufferedReader.readLine();
                
                //a linha abaixo lança uma NumberFormatException se o usuário
                //fornecer algo que não pode ser convertido em inteiro.
                a = Integer.parseInt(userInput);
                haveValue = true;//sinaliza que podemos sair do loop
            }
            catch (Exception e)
            {
                System.out.println("O valor de A deve ser um número inteiro");
            }
        }while(!haveValue);
        
        System.out.println("Obrigado!\n");
        
        //agora, vamos ler o valor de N, que não pode ser negativo.
        haveValue = false;
        do
        {
            try
            {
                System.out.println("Agora, por favor, forneça o valor de N:");
                String userInput = bufferedReader.readLine();
                
                //uma NumberFormatException é lançada se o usuário fornecer algo
                //que não possa ser convertido em um inteiro.
                n = Integer.parseInt(userInput);
                if(n > 0)
                    haveValue = true;//temos nosso valor, vamos sair do loop.
                else //forçamos a reiteração do lop
                    throw new IllegalArgumentException();
            }
            catch (Exception e)
            {
                System.out.println("O valor de N deve ser um número inteiro positivo");
            }
        }while(!haveValue);
        
        //pronto, temos os dois valores, apenas precisamos
        //iterar de A até A + N e acumular a soma.
        
        int sum = 0;//essa variável servirá para acumular a soma.
        for(int i = 0; i < n; ++i)
        {
            //adicionamos a variável sum o valor de a, e em seguida incrementamos em 1
            //o valor de a
            sum += a++;
        }
        
        
        System.out.println("O resultado da soma é " + sum);
    }
}
 int sum = (2*a + n - 1) * n / 2 ;

Ah sim, a forumulazinha de Gauss. Como a aula é de programação e não matemática achei mais relevante usar o máximo de constructos da linguagem possível.

Devem andar sempre de mãos dadas… :slight_smile:

Devem. Mas este caso, creio eu, é semelhante ao professor pedir em exercício que o aluno calcule o N-ésimo número de Fibonacci quando o tópico é recursão, e o aluno apresente como resposta a forma fechada :slight_smile: