检查 2 个整数之间的数字

Check numbers in between 2 integers

我正在为即将到来的 Java 测试做复习,我卡在了一部分,无法解决。

问:取2个整数,从Int A到Int B,如果X能被6或5整除但不能同时被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++;
}

您的代码给出了一个无限循环,因为 numOne 在 while 循环之外 递增。把它移到里面,它似乎可以正常工作。

将代码更改为

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++; 移动到循环内。你没有改变循环内的任何变量所以你会得到一个无限循环

你的增量在 while 循环之外。您需要在循环体的末尾递增 numOne。

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

也用Exclusive 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++;
}

你也可以这样写:

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