【问题标题】:Check numbers in between 2 integers检查 2 个整数之间的数字
【发布时间】:2015-04-12 11:44:19
【问题描述】:

我正在为即将进行的 Java 测试进行修订,但我卡在了某个部分,无法解决它。

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

【问题讨论】:

    标签: java loops netbeans integer


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

    【讨论】:

      【解决方案2】:

      您的代码给出了一个无限循环,因为numOne 在while 循环外部 递增。只要把它移进去,它似乎就可以正常工作了。

      【讨论】:

      • 谢谢!我没有意识到我把增量留在外面
      【解决方案3】:

      您的增量在 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++;
      }
      

      【讨论】:

        【解决方案4】:

        你也可以写:

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

        【讨论】:

          猜你喜欢
          • 2015-03-22
          • 1970-01-01
          • 2015-01-22
          • 2023-04-02
          • 1970-01-01
          • 2021-07-22
          • 1970-01-01
          • 2011-10-20
          • 1970-01-01
          相关资源
          最近更新 更多