Recebe dois valores numéricos inteiros (num1 e num2), maiores do que 0, e
retorna o valor do somatório de todos os números ímpares presentes na faixa
de num1 até num2.
No geral, a lógica está certa. Mas faltou prestar mais atenção nos detalhes do enunciado.
O exercício pede especificamente para você somar os números ímpares que sejam maiores que num1. No seu programa, você começou sempre do 1.
Além disso, ele pede para imprimir só o somatório final, não toda a sequência.
Para testar se um número é ímpar, basta ver se o resto dele por 2 é igual a 1:
publicintsomaImpares(intnum1,intnum2){intsoma=0;if(num1%2==1){soma=num1;}else{//Se num1 for par, começamos a somar do próximo numero.soma=num1+1;}intproxNum=soma+2;while(proxNum<=num2){soma+=proxNum;proxNum+=2;}returnsoma;}publicstaticvoidmain(String[]args){System.out.println(somaImpares(10,30));}
Outra coisa. Preste atenção na convenção de código:
Nome de classes começam com letra maíscula (a sua está ok);
Nome de variáveis sempre começam com letra minúscula. Assim o melhor seria ter declarado proxNum ao invés de ProxNum;
Nome de métodos também começam com letra minúcula (impares ao invés de Impares).
2. Usando a soma dos termos de uma PA. A fórmula é:
(a1 + an) * n
---------------
2
Onde:
a1 = num1
an = num2
n = (a1 - an) / 2 + 1
public int somaImpares(int num1, int num2) {
//Garante que num1 seja impar
if (num1% 2 == 0) {
num1++;
}
//Garante que num2 seja impar também
if (num2 % 2 == 0) {`
num2--;
}
int n = (num1 - num2) / 2 + 1;
return ((num1 + num2) * n) / 2;
}
Sendo a última, apesar de estranha, o jeito mais eficiente de se calcular essa soma.
2. Usando a soma dos termos de uma PA. A fórmula é:
(a1 + an) * n
---------------
2
Onde:
a1 = num1
an = num2
n = (a1 - an) / 2 + 1
public int somaImpares(int num1, int num2) {
//Garante que num1 seja impar
if (num1% 2 == 0) {
num1++;
}
//Garante que num2 seja impar também
if (num2 % 2 == 0) {`
num2--;
}
int n = (num1 - num2) / 2 + 1;
return ((num1 + num2) * n) / 2;
}
Sendo a última, apesar de estranha, o jeito mais eficiente de se calcular essa soma.
Rapaz... muito obrigado pela ajuda e pelas dicas tbm!
Abraços!