JAVA基础05
循环结构
for循环
格式 : for (初始化语句 ; 条件控制语句 ; 循环控制语句) {
循环体语句
}
执行流程 : 先执行初始化语句 , 再执行条件控制语句 , 如果判断结果为true就执行循环体语句 . 最后再执行循环控制语句 . 如果条件控制语句判断为false 就跳出该循环 .
注意 : for 循环中的初始化语句只会执行一次 , 而且初始化语句中定义的变量只在该循环中有效,跳出该循环后就失效 , 且在循环体外部调用不到.
例题 :
//打印1-100中能被7整除或数字中包含7的数字
public class Demo3 {
public static void main(String[] args) {
for(int i= 1 ; i<=100;i++) {
if(i%10==7||i/10==7||i%7==0) {
System.out.println(i);
}
}
}
}
while 循环
格式 : 初始化语句
while(条件控制语句) {
循环体语句
循环控制语句
}
执行流程 : 先执行初始化语句 , 再执行条件控制语句 , 如果判断结果为true就执行循环体语句 . 最后再执行循环控制语句 . 如果条件控制语句判断为false 就跳出该循环 .
for循环和while循环对比:
for循环适合针对一个范围判断进行操作
while循环适合不知道循环的次数,或者要求循环的次数
例题 :
-
/* 一次攒5块,多少次攒够1024块 * 一张纸0.12m,对折多少次到8848m */ public class Demo5 { public static void main(String[] args) { int i = 1; int sum = 5; while (sum <= 1024) { sum += 5; i++; } System.out.println(i); int n = 0; double h = 0.12; while (h <= 8848) { h *= 2; n++; } System.out.println(n); } }
import java.util.Scanner;
//贪吃蛇游戏
public class Demo6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int sum = 0;
System.out.println("请输入一个数字");
int i = sc.nextInt();
while (true) {
if (i == 1) {
sum += 10;
System.out.println("请输入一个数字");
i = sc.nextInt();
} else {
System.out.println("游戏结束");
break;
}
}
System.out.println("游戏结束,得分:" + sum);
}
}
do …while循环
格式 : do{
循环体语句
循环控制语句
}while(条件控制语句)
执行流程 : 先执行循环体语句 , 再执行循环控制语句 , 再执行条件控制语句结果为true就返回执行循环体语句,条件控制语句为false就跳出该循环体往下执行 .
import java.util.Scanner;
//通过键盘录入一个密码,判断是否登录成功
public class DoWhileDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m ;
do {
System.out.println("请输入密码");
m = sc.nextInt();
}while(m!=123456) ;
System.out.println("登录成功");
}
}
==符号即可以比较基本数据类型,也可以比较引用数据类型,比较基本数据类型时,比较的是他们所代表的数值是否相同,比较引用数据类型时,比较的是它的地址值是否相同.
因为字符串是引用数据类型 , 所有比较两个字符串内所含的数据是否相同时,不能使用==符号 , 应该使用equals
用法如下:
import java.util.Scanner;
//判断输入密码是否正确
public class Demo7 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//方法一
String password = null;
do {
System.out.println("请输入一个密码");
password = sc.next();
if (!password.equals("123456")) {
System.out.println("密码输入错误,请重新输入");
} else {
System.out.println("登录成功");
break;
}
} while (false);
//方法二
String m = null ;
do {
System.out.println("请输入密码");
m = sc.next();
}while(!m.equals("123456")) ;
System.out.println("登录成功");
}
}
三种循环语句之间的用法建议
for循环适合 , 当你知道一个明确的循环次数 , 可以针对一个范围进行的操作
whlie 循环适合不知道循环的次数 , 或要求去求循环的次数时进行的操作
do…while 适合至少需要循环一次的操作
for 循环嵌套
使用for循环嵌套打印一个图型 或99乘法表时, 外层循环控制行数 , 即这个图型需要打印多少行 . 内层图形, 控制每行需要打印的个数 . 外层每进行一次循环 , 内层都会把它整个循环走完才会跳到外层的下一次循环 .
核心思想 : for循环中的初始化语句 , 表示这个循环的一个起点 , 条件控制语句代表了这个循环的终点 , 循环控制语句代表了这个循环每一次迈出步伐的大小 .
//打印倒三角
public class Demo11 {
public static void main(String[] args) {
for(int i =0;i<5;i++) {
for(int j =i;j<6;j++) {
System.out.print("*");
}
System.out.println();
}
}
}
//99乘法表
public class Demo12 {
public static void main(String[] args) {
for(int i =1; i<=9; i++) {
for(int j = 1 ; j<=i;j++) {
System.out.print(j+"*"+i+"="+j*i+"\t" );// "/t"制表符,使表格变得规整
}System.out.println();
}
}
}
//打印一个由数字组成的等腰三角型
public class Demo16 {
public static void main(String[] args) {
int i = 0;
int j = 0;
int k = 0;
int l = 0;
for (i = 1; i < 6; i++) { //控制行数
for (j = 5; j >= i; j--) { //打印一个倒三角的空格图形
System.out.print(" ");
}
for (k = 1; k <= i; k++) { //打印一个每一行都是升序的正三角图形
System.out.print(k);
}
for (l = i - 1; l > 0; l--) { //打印一个每一行都是降序的正三角图形
System.out.print(l);
}
System.out.println();
}
}
}
1
121
12321
1234321
123454321
跳转控制语句
break 只能在switch和循环语句中使用 , 执行到break时会跳出switch语句或跳出本身所在的循环体 , 如果想跳出外循环 , 可以给外循环定义一个循环名 , 然后加在break的后面 .
return 可以在任意场景使用 , 循环体中使用时代码运行到return , 就会自动结束整个方法 , return也可以在方法中做返回值使用 .
continue 只能在循环体中使用 , 离开循环体场景 , 直接报错 . 使用continue时如果执行到它 , 它会自动吃掉该循环的运行结果 . 并继续下次循环 .
//return break continue 的应用
public class Demo13 {
public static void main(String[] args) {
A: for (int i = 0; i < 10; i++) {
if (i == 2) {
break A;
}
System.out.println(i);
}
System.out.println("我是循环外代码");
for (int i = 0; i < 10; i++) {
if (i == 3) {
return;
}
System.out.println(i);
}
System.out.println("我是循环外代码");
for (int i = 0; i < 10; i++) {
if (i == 3) {
continue;
}
System.out.println(i);
}
System.out.println("我是循环外代码");
}
}