Java 哪里出错啦?

来源:百度知道 编辑:UC知道 时间:2024/06/12 01:40:02
/*
【程序39】
题目:编写一个函数,
输入n为偶数时,调用函数求1/2+1/4+...+1/n,
当输入n为奇数时,调用函数1/1+1/3+...+1/n
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Thirtynine
{

public static void main(String[] args)
{
try
{
System.out.println("Please Input a Number!");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int num = Integer.parseInt(str);

double sum=0;

if(num==0)
{
System.out.println("Sum is 0");
}
else if(num%2==0)
{
for(int j=2;j<=num;j=j+2)
{
double k;
k=1/j;
sum=sum+k;
}
System.out.println("Sum is"+" "+sum);
}
else
{

else if(num%2==0) {
for(int j=2;j<=num;j=j+2) {
double k;
k=1/j; //此处的j是int类型,计算时会把 1/j 结果转成int型,再赋给k;
sum=sum+k;
}

else {
for(int j=1;j<=num;j=j+2) {
double k;
k=1/j; //此处同理,1/j 先转成 int ,再赋给 k
sum=sum+k;
}

也就是说如果j=2的话, 1/j = 0 ,结果是 k = 0

应该将 k=1/j 修改成如下形式:
k=1/(double)j;

package test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Scanner;

public class Ca {

public static void main(String[] args) {
System.out.println("Please Input a Number!");
// BufferedReader br = new BufferedReader(new InputStreamReader(
// System.in));
Scanner sc = new Scanner(System.in);

String str = sc.nextLine();
int num = Integer.parseInt(str);

float sum = 0;

if (num == 0) {