用while语句增强找整除数的程序

用while语句增强找整除数的程序

增强点:找出n个可以被整除的数。

while语句的语法

  • 条件表达式的结果是一个boolean值,如果为true,则执行循环体,如果为false, 则循 环结束。

  • While循环体是一个代码块。所以while循环也是可以嵌套别的语句的,包括while语句, for语句,if-else语句等。

while(条件表达式)

while循环体

while语句的代码示例

public class Example_while {
  public static void main(String[] args) {
      int n = 10;

      int dividend = 100;
      int divisor = 89;
      //从一百开始找出10个能够整除89的数
      int found = 0;
      while(found < n){
          if (dividend % divisor == 0){
              found ++;
              System.out.println(dividend+"可以整除"+divisor+",商为"+(dividend / divisor));
          }
          dividend++;
      }
  }
}

do-while语句—至少执行一次

  • do-while语句语法

  • do-while语句的循环体至少执行一次

do{

while循环体

}while(条件表达式):

代码示例

do {
  System.out.println("先执行一次");
}while (false);

死循环(endless loop)

  • 死循环:无法结束的循环(endless loop/infinite loop)

  • 死循环是因为没有设置好结束条件,循环的结束条件很重要,要充分考虑各种 边界情况。

  • 一个死循环的例子

public class Abexample {
  public static void main(String[] args) {
      int n = 5;
      int found = 0;
      while (found < n){
          System.out.println("死循环代码");
      }
  }
}

一个看似死循环却不是死循环的例子

  • 用while找出5个能被2,000,000,000整除的数

  • 程序最终还是结束了,但是结果并不是我们想要的

public class FindNDivNotEndess {
  public static void main(String[] args) {
      int n = 5;
      int dividend = 100;
      int divisor = 2000000000;

      int found = 0;
      while (found < n) {
          if (dividend % divisor == 0) {
              System.out.println(dividend + "可以整除" + divisor + ",商是" + dividend/divisor);
              found++;
          }
          dividend++;
      }
  }
}

执行的结果为 :
2000000000可以整除2000000000,商是1
-2000000000可以整除2000000000,商是-1
0可以整除2000000000,商是0
..........
//int里面基本上不存在能够整除20亿的数 ,因此代码的执行结果会在正数输出之后输出负数,循环起来

使用break语句结束循环

  • break语句可以结束任何循环

  • 不考虑负数的情况,使用break改善程序

  • 理解String start的内容,为什么不是"从-2147483648开始递增"

posted @ 2022-04-09 17:10  comia  阅读(119)  评论(0)    收藏  举报