Некорректная работа вычислений
import java.util.Scanner;
public class Third {
public static void main(String[] args)
{
Scanner obj = new Scanner(System.in);
double y = 1;
System.out.println("Enter x:");
int x = obj.nextInt();
System.out.println("Enter n:");
int n = obj.nextInt();
if(n > 1)
{
label:
for (int i = 1; i <= n - 1; i++)
{
double sum = 0;
for (int j = 0; j <= n; j++)
{
if(i == (j + x))
{
continue label;
}
else if((j + x) == 0)
{
System.out.println("Error!");
break label;
}
else
{
sum += i / (j + x);
}
}
y *= sum;
}
System.out.printf("X = %d; Y = %f", x, y);
}
else {
System.out.println("Invalid N!");
}
}
}
Есть такая программа, которая почему то при любых значениях x и n выдает y=0.
Не могу понять в чем проблема.
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Тут 2 проблемы. 1) вы выводите в консоль x, y вместо sum 2)в правой части уравнения в этой строке кода все переменные типа int: sum += i / (j + x); в джаве любые математические операции над интами всегда дает int. выход простой: sum += i / (double)(j + x);
В итоге получаем примерно такой код:
import java.util.Scanner;
public class Third {
public static void main(String[] args) {
Scanner obj = new Scanner(System.in);
double y = 1;
System.out.println("Enter x:");
int x = obj.nextInt();
System.out.println("Enter n:");
int n = obj.nextInt();
if (n > 1) {
double sum = 0;
label:
for (int i = 1; i <= n - 1; i++) {
for (int j = 0; j <= n; j++) {
if (i == (j + x)) continue label;
else if ((j + x) == 0) break label;
else sum += i / (double)(j + x);
}
y *= sum;
}
System.out.print("Result : " + sum);
} else {
System.out.println("Invalid N!");
}
}
}
