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);
}
}
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. 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