Boa noite a todos. O resultado aqui sempre dá zero. Isso é o correto?
Link da imagem: https://www.clubedohardware.com.br/uploads/monthly_2021_03/image.png.ca1e3673c588c4fcd84fb108b2cf73f8.png
package exerciciosFaculdade;
import java.util.Scanner;
public class exercicio5 {
// Calcule o valor da série S. Escreva um programa em Java que leia dois valores reais, x e y,
// positivos e menores que 1.
// O programa deve calcular e imprimir o valor da série S, como descrita na imagem em anexo.
public static void main(String[] args) {
float x, y, a, b;
double s = 0;
float z;
int c = 1, d = 1, i = 0;
Scanner tc = new Scanner(System.in);
a = (float) 2.0;
b = (float) 3.0;
do {
System.out.println("\n\tDigite um valor real, positivo e menor que 1");
x = tc.nextFloat();
if (x < 0 || x >= 1.0) {
System.out.println("Número inválido. Aceito somente números positivos e menores do que 1");
} else {
c = 0;
}
} while (c != 0);
do {
System.out.println("\n\tDigite um valor real, positivo e menor que 1");
y = tc.nextFloat();
if (y < 0 || y >= 1.0) {
System.out.println("Número inválido. Aceito somente números positivos e menores do que 1");
} else {
d = 0;
}
} while (d != 0);
z = x * y;
do {
if (i == 0 && i % 2 != 0) {
s = (float) (z - ((Math.pow(x, a) * Math.pow(y, b)) / Math.pow(x + y, a * b)));
i++;
a = (float) (a + 1.0);
b = (float) (b + 2.0);
System.out.printf("\n%d\n",s);
}
if (s >= 0.001 && i % 2 != 0) {
s = (float) s + ((Math.pow(x, a)) * Math.pow(y, b)) / Math.pow(x + y, a * b);
a = (float) (a + 1.0);
b = (float) (b + 2.0);
i++;
System.out.printf("\n%d\n",s);
}
if (s >= 0.001 && i % 2 == 0) {
s = (float) s - ((Math.pow(x, a)) * Math.pow(y, b)) / Math.pow(x + y, a * b);
a = (float) (a + 1.0);
b = (float) (b + 2.0);
i++;
System.out.printf("\n%d\n",s);
}
} while (s >= 0.001);
System.out.println(s);
}
}