一、while循环
语法:
初始化条件表达式;
while(条件表达式){
循环体;
控制条件表达式;
}
执行顺序:
1、执行初始化条件表达式
2、执行条件表达式进行判断,
如果结果为true,就执行循环体
如果结果为false,就不执行
3、执行循环体
4、执行控制条件表达式
5、执行第二步
public class WhileDemo {
//7、打印出1-100之间所有不是7的倍数和不包含7的数字,并求和
public static void main(String[] args){
int i= 1;//初始化条件表达式
int sum = 0;//在循环体外定义一个变量,用来存储累加的和
while (i <= 100){//条件表达式
//循环体
//7的倍数: i % 7 == 0
//个位是7: i % 10 == 7
//十位是7: i / 10 == 7
if(!(i % 7 == 0 || i % 10 == 7 || i / 10 == 7)){
System.out.println("i = " + i);
sum = sum + i;//将不符合条件的数进行相加
}
i++;//控制条件表达式
}
System.out.println("sum = " + sum);
}
}
二、do...while...循环
do...while...循环
初始化条件表达式;
do{
循环体;
控制条件表达式;
}while(条件表达式);
执行过程:
1、执行初始化条件表达式
2、执行循环体
3、执行控制条件表达式
4、执行条件表达式,如果结果为正确就回到第二步,如果结果为错误就不执行
注意:
1、无论初始化条件是否符合执行的条件表达式都会至少执行1次
2、会先执行控制条件表达式将条件改变了之后再执行条件表达式
实际执行条件表达式的时候已经不是初始化条件表达式了,是改变之后的
无论后面的执行情况如何都会至少执行一次
public class DoWhileDemo {
public static void main(String[] args) {
int i = 100;//初始化条件表达式
do {
System.out.println("i = " + i);
i++;//控制条件表达式
System.out.println("i = " + i);
}while (i <= 10);//条件表达式
}
}
三、break&continue
break:如果是一层循环,那么将循环停止
如果是多层循环嵌套,那么就结束内层循环
外层循环继续执行
continue:跳过当前的循环,依然会执行下一次循环
public class Break_Continue {
public static void main(String[] args) {
int i = 1;
while(i <= 10){
if(i == 5){
//break;
i++;
continue;
}else{
System.out.println("i = " + i);
i++;
}
}
}
}
四、死循环
死循环:
循环不断的执行没有停止的条件
死循环一般和break一起使用,一般要在里面写一个分支语句
使用场景:
不知道要执行多少次,知道有一个正确的答案,能够将程序停止
public class EndlessLoop {
public static void main(String[] args) {
//三个条件都不给会不断的执行
// for(;;){
// System.out.println("我是一个死循环");
// }
//有初始化条件表达式和控制条件表达式就可以实现计数的操作
// for(int i = 1;; i++){
// System.out.println("i = " + i);
// }
while(true){//条件表达式
System.out.println("死循环");
}
}
}
五、嵌套循环
循环嵌套:
当我们有多个循环需要执行,一个循环属于另外一个循环的执行体,我们会进行循环的嵌套
例1:九九乘法表
public class Qt {
public static void main(String[] args) {
/**
* 九九乘法表
*/
//外层循环控制打印的行数
for(int i = 1; i <= 9; i++){
//内层循环控制每层打印的个数
//每行打印的个数和行数是相同
for(int j = 1; j <= i; j++){
System.out.print(i + " * " + j + " = " + (i * j) + "\t");
}
//每行打印完成之后换到下一行
System.out.print("\n");
}
}
}
例2:质数(素数):
除了质素之外的数是和数,还有0 1
因素:被除数除以除数,余数为0的时候,除数和商就是被除数的因数
概念:除了1和它本身之外,没有其他的因素
在进行除法运算的时候,余数一直不为0,那么这个数就是一个质数
拿 2 ~ n - 1之间的数进行求余运算,看余数是否一直不为0
public class Prime {
public static void main(String[] args) {
int index = 0;
//找出100以内所有的质数
//外层循环控制比较的次数
for(int i = 2; i <= 1000000; i++){
//默认所有的数都是质数
boolean flag = true;//设置一个标识,如果说标识一直没有改变,说明这个数是质数
//内层循环控制哪些数和i进行求余运算
//开根号 Math.sqrt(double)
for(int j = 2; j <= Math.sqrt(i); j++){
//如果说i被j给整除了,余数为0了说明这个数不是质数,就把标识改掉
if(i % j == 0){
flag = false;
//如果flag的值已经改变了,说明这个数已经不是质数了,就不需要再往后进行比较的了
break;
}
}
if(flag){
System.out.println("i = " + i);
index++;
}
}
System.out.println("一共有" + index + "个");
}
}
六、Random
随机数函数:
//导包:
//在java中已经提供的类,我们可以对其进行引用,导包就是找到这个类的地址
//引用的时候先将这个类写好,报错的时候,光标放在报错的地方,使用快捷键alt + enter
import java.util.Random;:
/**
* 方式1:Math.random():数学类中用来产生随机数的方法
* 方式2:Random类
*/
public class RandomDemo {
public static void main(String[] args) {
//要使用类就要创建对象,如何创建对象
//语法:
//类名 对象名 = new 类名();
Random r = new Random();
//可以使用对象去调用类中的方法,方法就是这个类的功能
//产生一个0 - 1之间的随机小数,包含0但是不包含1
double a = r.nextDouble();
System.out.println("a = " + a);
//产生一个int范围内的整数
int b = r.nextInt();
System.out.println("b = " + b);
//产生0 到 参数之间的随机整数
int c = r.nextInt(10);//bound是一个参数
System.out.println("c = " + c);
//如果要产生两个数范围之内的数值
//65 - 90
// 65 + 0 ~ 25
int num = 65 + r.nextInt(90 - 65);
System.out.println("num = " + num);
}
}