2017-10-11 63 views
-5

我已经试过所有我能想到的,但没有什么工作这个问题...输入一个整数,并利用跳跃因子

提示用户输入一个整数n。

  • 如果n是奇数,那么计算下面的跳跃因子:1*3*5*7*…*n;
  • 如果n是偶数,则计算以下跳跃因子:2*4*6*…*n;
  • 如果n为负数或零,则结果为0

最后输出结果。

import java.util.Scanner; 
public class problem10 { 
    public static void main(String[] args) { 

     // part 1: open scanner 
     Scanner sc = new Scanner(System.in); 

     // part 2: prompt user to enter a number 
     System.out.println("Please enter an integer: "); 
     double num = sc.nextDouble(); 

     // part 3: tell whether number is odd or even 
     for (int i=0; i>0; i+=2) { 
      if(i%2); 
     } 
    } 
} 

这就是我所拥有的,但我不知道该怎么做才能判断数字是否因为我不能使用整数或带布尔值的double。

+5

这必须是当天某处的作业 –

+0

if **必须**的条件评估为布尔值(true或false)。模数返回一个数字。数字不是布尔值 – litelite

+2

如何计算'7.3'的阶乘?或者以另一种方式问:为什么'num'是一个'double'? – Andreas

回答

0

你误会使用modulo运营商:

i % 2会给你的i/2师提醒:

如果i5和您2划分它,模会1,所以这里有两种选择:

  1. 知道这个数字是偶数还是奇数提醒与其他值进行比较

    • 连号有0
    • 奇数的提醒不

    翻译是对Java

  2. 正如@Andreas如上所述,你不需要知道它们是偶数还是奇数,你可以这样做:

    从N到(从最近的数字到0(即1或2取决于当n为偶数或奇数))

    if (n > 0) { /*Do whatever you need to do here*/ } 
    

    if N <= 0则返回0

这是所有

0
import java.util.Scanner; 

public class problem10 { 

public static void main(String[] args) { 

// part 1: open scanner 
Scanner sc = new Scanner(System.in); 

// part 2: prompt user to enter a number 

System.out.println("Please enter an integer: "); 

int res = 1; 

int num = sc.nextInt(); 

// part 3: tell whether number is odd or even 

if(num <= 0) { // if number is negative or 0 

    res = 0; 
    System.out.println(""+res); 
    return; 
} 

if(num % 2 == 0) { // check for even 

    for (int i = 2; i <= num; i+=2) { 
     res *= i; 
    } 

    System.out.println(""+res); 
    return; 

}else{ // check for odd 
    for (int i = 1; i <= num; i++) { 
     res *= i; 
    } 

    System.out.println(""+res); 
    return; 

} 

} 

} 

我已编辑的代码,使其工作。

与您的代码的问题是:

  1. 你还没有检查到的数量是偶数或奇数或零

  2. 代码中的循环是不必要的.. !!

我想推荐你分析这个解决方案,并了解你所犯下的错误,并改正。我还建议您通过遵循一些在线教程和编码网站来了解有关循环和条件检查的更多信息。

希望这对你有所帮助。

+0

请不要给他们鱼,教他们如何去钓鱼 – Frakcool

+0

我已经向他展示了他做错了什么,以及如何正确地做到这一点..我认为对某些对某事有近0经验的人谈论某事不是对他有利。 –

+0

希望他学习他的错误是什么以及如何从我提供的答案中纠正它们 –