检查2个整数之间的数字

时间:2015-04-12 11:44:20

标签: java loops netbeans integer

我正在为即将进行的Java测试进行修订,而且我陷入困境,我无法解决它。

问:接受2个整数,从Int A到Int B,如果X可被6 OR 5整除,则不会两者都显示X,并且每10个数字后打印一个新行。

以下是我目前的代码:

public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in);
    int numOne = sc.nextInt();
    int numTwo = sc.nextInt();
    int line = 1;

    while (numTwo > numOne) {

        if (line%11==0){
            System.out.println("");
        }

        if ((numOne % 5 == 0) && (numOne % 6 != 0)) {
            System.out.print(numOne + " ");
            line++;
        }
        if ((numOne % 6 == 0) && (numOne % 5 != 0)) {
            System.out.print(numOne + " ");
            line++;
        }
    }
    numOne++;
}

4 个答案:

答案 0 :(得分:2)

您的代码提供了无限循环,因为numOne在while循环外增加 。只需将其移入内部,它似乎正常工作。

答案 1 :(得分:2)

将代码更改为

while (numTwo > numOne) {

        if (line%11==0){
            System.out.println("");
        }

        if ((numOne % 5 == 0) && (numOne % 6 != 0)) {
            System.out.print(numOne + " ");
            line++;
        }
        if ((numOne % 6 == 0) && (numOne % 5 != 0)) {
            System.out.print(numOne + " ");
            line++;
        }
      numOne++;
    }

在循环内移动numOne++;。你没有改变循环内的任何变量,所以你将得到一个无限循环

答案 2 :(得分:1)

你的增量超出了while循环。你需要在循环体的末尾增加numOne。

目前你有一个无限循环。由于numOne永远不会改变,因此numTwo总是大于numOne。

同样使用独家OR ^,这会使这个问题变得更简单: http://www.programmerinterview.com/index.php/java-questions/xor-in-java/

while (numTwo > numOne) {

    if (line%11==0){
        System.out.println("");
    }

    if ((numOne % 5 == 0) && (numOne % 6 != 0)) {
        System.out.print(numOne + " ");
        line++;
    }
    if ((numOne % 6 == 0) && (numOne % 5 != 0)) {
        System.out.print(numOne + " ");
        line++;
    }
    numOne++;
}

答案 3 :(得分:1)

你也可以写:

if ((numOne % 5 == 0 || numOne % 6 == 0) && numOne % 30 != 0)