package test2;
import java.util.Scanner;
public class test {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
double b = sc.nextInt();
int sum = qiuhe(b);
System.out.printf("结果为"+sum);
}
public static int qiuhe(double b)
{
int he = 0;
for(int i=1;i<=b;i++)
{
he+=Math.pow(-1, i-1)*(1/i);
}
return he;
}
}
这是我的代码 我想求的是 1-1/2+1/3-1/4.。。。。的前n项的和 但是我这个代码在软件上无法运行,求大家帮我解决一下
我不懂怎么做自定义的函数 希望高手help一下
我就仅仅改下原代码的问题哈
1. 方法中生命he变量为int类型是不合适的,由于求的值为小数,应该使用double好一点;
2. 在for循环内部的计算式中,由于i为整型,则1/i的计算结果也是整型,会丢失精度,直接改成除法;
如下图所示:
希望采纳哈
public static double add(int b) {
double sum = 0;
while (b != 0) {
sum += (1.0 / (b - 1) - 1.0 / b);
b -= 2;
}
System.out.println(sum);
return sum;
}
这个只能处理偶数项,即bwe偶数,
public static double add(int b) {
double sum = 0;
if (b % 2 == 1) {
sum = 1.0 / b;
b--;
}
while (b != 0) {
sum += (1.0 / (b - 1) - 1.0 / b);
b -= 2;
}
System.out.println(sum);
return sum;
}
这个可以处理奇数
public double sum(int index)
{
double res = 0;
for (int i = 1; i <= index; i++)
{
res += (i % 2 == 0) ? -(1d / i) : (1d / i);
}
return res;
}
要对多少项进行求和,index就传几
Math.pow(-1, i-1)*((double)1/i); 加个double 强制转换下转换,不转的换默认整形
无法运行是进入带输入状态了吧,你得键入数据啊
测试是可以运行的,估计是你没有输入数据吧,可以加一个输出提示
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字:");
double b = sc.nextInt();