输入一个整数并使用跳转因子

时间:2017-10-11 17:33:11

标签: java if-statement

我已经尝试了我能想到的一切,但没有任何方法可以解决这个问题...

提示用户输入整数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);
        }
    }
}

这就是我的全部,但我不知道如何判断这个数字是否是因为我不能使用整数或双重布尔值。

2 个答案:

答案 0 :(得分: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

  3. 全部

答案 1 :(得分: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. 您的代码中的循环是不必要的.. !!

  3. 我建议您分析此解决方案并了解您所犯的错误并予以纠正。我还建议您通过以下在线教程和编码网站了解有关循环和条件检查的更多信息。!!

    希望这能帮到你。!!