合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
>[success] # while -- 循环 * 循环条件成立进入循环体,循环条件不成了就跳出循环 ~~~ while(条件表达式) { 循环体; } ~~~ >[danger] ##### 计算累加 ~~~ public class SumTest { public static void main(String[] args) { int i = 1; int sum = 0; while (i <= 100) { sum += i; i++; } System.out.print(sum); } } ~~~ >[danger] ##### 输入数取反 * `123`为例子 先获取个位即`123 % 10` 得到`3` 将 `十位2 变成个位` 即 `123 / 10` 两个int 相除得到是 int 类型 得到了 `12` 在继续上一步 `12 % 10` 得到 `2`,依次 类推直到 `1 / 10` 两个 int 类型 相除 得到 `0` 即每一位都进行了相除循环结束 ~~~ import java.util.Scanner; class WhileReverse { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); while (n > 0) { int i = n % 10; // 取余数 获取当前个位数 System.out.print(i); n = n / 10; // 取整数 获取剔除最后一位 } } } ~~~ * 循环并记录 ,每循环一次相对扩大10倍 ~~~ import java.util.Scanner; class WhileReverse { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int res = 0; while (n > 0) { res = res * 10 + n % 10; // 3 32 321 n /= 10; // 12 1 0 } System.out.println(n + "逆序后的结果是:" + res); } } ~~~ >[danger] ##### 求余数案例 ~~~ public class Test { public static void main(String[] args) { /* * 需求:给定两个整数,被除数和除数(都是正数,且不超过int的范围) 。 * 将两数相除,要求不使用乘法、除法和 % 运算符。 * 得到商和余数。 * * 分析: * 被除数 / 除数 = 商 ... 余数 * * int a = 100; * int b = 10; * * 100 - 10 = 90 * 90 - 10 = 80 * 80 - 10 = 70 * 70 - 10 = 60 * ... * 10 - 10 = 0 (余数) * */ // 1.定义变量记录被除数 int dividend = 100; // 2.定义变量记录除数 int divisor = 37; // 3.定义一个变量用来统计相减了多少次 int count = 0; // 3.循环 while // 在循环中,不断的用被除数 - 除数 // 只要被除数 是大于等于除数的,那么就一直循环 while (dividend >= divisor) { dividend = dividend - divisor; // 只要减一次,那么统计变量就自增一次 count++; } // 当循环结束之后dividend变量记录的就是余数 System.out.println("余数为:" + dividend); // 当循环结束之后,count记录的值就是商 System.out.println("商为:" + count); } } ~~~ >[danger] ##### 回文数 ~~~ public class Test { public static void main(String[] args) { /*需求:给你一个整数 x 。 如果 x 是一个回文整数,打印 true ,否则,返回 false 。 解释:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而 123 不是。*/ //分析: //1.定义变量记录整数 int x = 12345; //把x做一个临时存储,用来最后进行判断 int temp = x; //2.定义变量记录最终的结果(反过来的数字) int result = 0; //3.利用循环从右往左获取x中的数字并拼接到result当中 //while while(x != 0){ //获取到x最右边的数字 int ge = x % 10; //获取一次数字之后,那么就要把当前最右边的数字给去掉 x = x / 10; //拼接到result当中 result = result * 10 + ge; } System.out.println(result == temp); } } ~~~ >[info] ## while 和 for 不同点 * while循环更适合于明确循环条件但不明确循环次数的场合中。 * or循环更适合于明确循环次数或范围的场合中。 * while(true) 等价于 for(;;) 都表示无限循环