一、无限循环
无限循环:循环一直停不下来
//for无限循环
for (;;){
System.out.println("学习");
}
//while无限循环 (常用)
while(true){
System.out.println("学习");
}
//do..while无限循环
do {
System.out.println("学习");
} while(true);练习
package com.yq.infiniteloop;
public class InfiniteloopDemo1 {
public static void main(String[] args){
//for格式的无限循环
/*
for(;;){
System.out.println("学习");
}
*/
//while格式的无限循环
while(true){
System.out.println("学习");
}
//注意:无限循环的下面不能再写其他代码,因为循环不会停下来,下面的代码不会执行
}
}二、跳转控制语句
在循环的过程中,跳到其他语句上执行
2.1 continue
跳过本次循环,继续执行下次循环
package com.yq.skiploop;
public class SkipLoopDemo1 {
public static void main(String[] args) {
//1.跳过某一次循环
for (int i = 1; i <= 5; i++) {
if (i == 3){
//结束本次循环,继续下次循环
continue;
}
System.out.println("小老虎在吃第" + i + "个包子");
}
}
}2.2 break
结束整个循环
package com.yq.skiploop;
public class SkipLoopDemo2 {
public static void main(String[] args) {
//2.结束整个循环
for (int i = 1; i <= 5; i++) {
System.out.println("小老虎在吃第" + i + "个包子");
if (i == 3){
//结束整个循环
break;
}
}
}
}三、练习
3.1 逢7过
package com.yq.test;
public class LoopTest1 {
public static void main(String[] args) {
/*朋友聚会的时候可能会玩一个游戏:逢7过
游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说过:过
需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据*/
for (int i = 1; i <= 100; i++){
if (i % 7 == 0 || i % 10 == 7 || i / 10 % 10 == 7){
System.out.println("过");
continue;
}
System.out.println(i);
}
}
}3.2 求平方根
package com.yq.test;
import java.util.Scanner;
public class LoopTest2 {
public static void main(String[] args) {
/* 需求:键盘录入一个大于等于2的整数 x,计算并返回x的平方根
结果只保留整数部分,小数部分将被舍去
*/
//原理:从1到x,一个一个求平方与x比较,得到整数部分
//键盘录入x
Scanner sc = new Scanner(System.in);
System.out.println("请输入大于等于2的整数: ");
int x = sc.nextInt();
// 循环实现
for (int i = 1; i <= x; i++){
if (i * i == x){
System.out.println(i + "就是" + x + "的平方根");
break; //一旦找到就结束,后面的数字不需要再找了
} else if (i * i > x){
System.out.println((i -1 )+ "就是" + x + "的平方根的整数部分");
break; //一旦找到就结束,后面的数字不需要再找了
}
}
}
}3.3 求质数
package com.yq.test;
import java.util.Scanner;
public class LoopTest3 {
public static void main(String[] args) {
//需求:键盘录入一个正整数x,判断是否为一个质数
// 质数:一个数只能被1和本身整除,那么这个数就是质数,否则这个数叫做合数
//键盘录入正整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数");
int number = sc.nextInt();
//定义一个变量,进行标记
//标记number是否为一个质数
boolean flag = true;
//判断
//for循环,从2开始判断,一直判断到number-1为止
int count = 0; //定义count计算循环次数
for (int i = 2; i < number; i++){
count = count + 1;
//i表示这个范围内的每一个数字
//判断number是否被i整除
if (number % i == 0){
flag = false;
// System.out.println(number + "不是一个质数");
break;
}
}
if (flag){
System.out.println(number + "是一个质数");
} else {
System.out.println(number + "不是一个质数");
}
System.out.println("循环计算次数为:" + count + "得到结果");
}
}
3.3.1 求质数-优化判断次数
因为目前还未学习直接计算一个数的算术平方根,只是利用循环强制计算算数平方根
package com.yq.test;
import java.util.Scanner;
public class LoopTest4 {
public static void main(String[] args) {
//判断一个数是否为质数,当这个数字很大的时候,按照之前的写法,会循环很多次
//推荐一个简化的思路
/*
81
1 * 81
3 * 27
9 * 9
以81的算数平方根,为中心,并且假设 a * b = 81
那么 a * b 中,其中有一个必定是小于等于9的,另一个是大于等于9的
*/
//键盘录入数字
Scanner sc = new Scanner(System.in);
System.out.println("请输入正整数: ");
int number = sc.nextInt();
//优化算法
//先计算number的算数平方根,先用强制循环计算,后续会有更好的方法
int x = 1;
for (; x <= number; x++){
if (x * x == number){
break;
} else if (x * x > number) {
x = x - 1;
break;
}
}
// System.out.println(x);
boolean flag = true;
int count = 0; // 定义count计算循环次数
for (int i = 2; i <= x; i++){
if (number % i == 0){
flag = false;
break;
}
count++;
}
if (flag){
System.out.println(number + "是一个质数");
} else {
System.out.println(number + "不是一个质数");
}
System.out.println("循环计算次数为:" + count + "得到结果");
}
}
3.4 随机数
3.4.1 生成随机数
package com.yq.test;
//获取随机数的类:Random
import java.util.Random;
/*
生成随机数的步骤:
1、导包
import java.util.Random;
2、创建对象
Random r = new Random();
3、生成随机数
int number = r.nextInt(随机数范围);
int number = r.nextInt(bound:100); //获取0~99之间的一个随机数
int number = r.nextInt(bound:10); //获取0~9之间的一个随机数
// 判断技巧:包头不包尾,包左不包右
*/
public class LoopTest5 {
public static void main(String[] args) {
Random r = new Random(); //创建对象
for (int i = 0; i < 100; i++){
int number = r.nextInt(10);
System.out.println(number);
}
}
}3.4.2 生成随机数 1~100
package com.yq.test;
import java.util.Random; //导包
public class LoopTest6 {
public static void main(String[] args){
Random r = new Random(); //创建对象
// 生成1~100的一个随机数
/*
技巧:生成任意随机数范围 (7~15)
1、范围头尾都减一个值,让范围从0开始 (头尾都减去7)
7~15 =》 0~8
2、尾巴加1 (8+1)
0~9 =》 r.nextInt(9);
3、最终结果加上第一步减去的值 (+7)
r.nextInt(9) + 7;
*/
// 1~100 =》 0~99 =》 100 =》 +1
int number = r.nextInt(100) + 1;
System.out.println(number);
}
}3.4.3 猜随机数小游戏
package com.yq.test;
import java.util.Random;
import java.util.Scanner;
public class LoopTest7 {
public static void main(String[] args){
//需求:程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数字是多少?
//1、生成一个1~100之间的随机数
Random r = new Random();
int number = r.nextInt(100) + 1;
// 注意:生成随机数的代码不能卸载while循环里面,否则每次循环随机数都会变化
int count = 0; // 定义count变量,记录循环次数
while (true) {
//2、键盘录入,猜数字
Scanner sc = new Scanner(System.in);
System.out.println("请输入猜的数字");
int guestNumber = sc.nextInt();
//3、判断
if (guestNumber > number) {
System.out.println("大了");
} else if (guestNumber < number) {
System.out.println("小了");
} else {
System.out.println("猜对了!!");
break; //只有猜中了才会退出程序
}
//4、三次保底,若超过三次都没有猜中,则提示答案
count++;
if (count > 3 && guestNumber != number){
System.out.println("猜了"+ count +"次也没猜中,告诉你答案吧!");
System.out.println(" 答案是:" + number);
}
}
}
}
评论区