Escreva um programa em Java que leia um valor inteiro N.
Caso o valor de N seja positivo ou igual a zero, calcule e apresente a soma S definida pela sequência:
S=0/1+1/2+2/3+3/4+⋯+N /(N +1) .
Caso o valor de N seja negativo, transforme o valor de N para positivo, calcule apresente o produto P definido pela sequência:
P = 3/1 * 4/2 * 5/3 * ⋯ * (N+2)/N
Obs: Se você estiver fazendo uma divisão de dois inteiros, por exemplo N/(N+1), o resultado será um valor inteiro e as casas decimais serão truncadas. Por exemplo, 1/2 será igual a zero e não 0.5, como esperado. Você precisa usar cast para forçar que o resultado seja convertido para um número real (double).
Exemplos:
Formato de entrada
4
Formato de saída
2.716666666666667
Entrada
11
Saída
8.896789321789322
Entrada
-13
Saída
104.99999999999999
Com o código abaixo tá funcionando para N positivo, só que quando é negativo tem alguns erros, tipo quando coloco -13 ele retornar 105.0 e no exemplo tem que dá 104.99999999999999
Acho que tô errando na hora de fazer o cast, só que já mudei e nada. Alguma ajuda?
int N = in.nextInt();
int f=1;
double S=0;
//Para N posiivo
if(N>=0){
for(int i=0; i<=N; i++){
S+=(double)i/(double)f;
f++;
}System.out.println(S);
//Para N negativo
}else if(N<0){
N=N*(-1);
int g=2;
double P=3;
double R = 0;
for(int i=4; i<=(N+2); i++){
P=(double)(P*i)/(double)g;
g++;
}System.out.println(P);
}