第4章循环语句
4.1 while循环
while循环在条件为真的情况下,重复的执行语句
语法如下
while(循环继续条件){
//循环体
语句(组);
}
循环继续条件是一个布尔表达式,控制循环体的执行。在循环体执行前总是先计算循环条件是否执行它。若条件为true,则执行循环体,若条件为false,则终止整个循环,并且程序控制转移到while循环后的下一条语句。
示例 猜数字
import java.util.Scanner;
//猜数字
public class Test4_1 {
public static void main(String[] args) {
//0.生成一个随机数
int number=(int) (Math.random()*101);
System.out.println("Guess a magic number between 0 and 100");
Scanner scanner=new Scanner(System.in);
//1.获取用户的输入值
//循环初始化
System.out.print("Enter your guess:");
int num=scanner.nextInt();
while(num!=number){//循环继续条件
if(num<number){
System.out.println("too low");
}else{
System.out.println("too high");
}
//循环间距
System.out.print("Enter your guess:");
num=scanner.nextInt();//更新num的值
}
System.out.println("Yes the number is "+number);
}
}
while适合于循环结束条件已知 但是循环次数未知的情况
for 适合于循环次数已知的情况
for和while之间是可以完全互换的
while(循环继续条件){
需要被循环执行的代码//循环体
}
循环初始化->循环继续条件->循环体->循环间距
循环初始化
while(循环继续条件){
循环体
循环间距
}
while(true){
循环体
循环间距
if(循环结束条件){
break;
}
}
4.2 do-while
do-while循环和while循环基本一样,不同的是它先执行循环体一次,然后判断循环继续条件
do{
循环体;//循环初始化 循环间距
}while(循环结束条件)
如果循环中的语句至少要执行一次,建议使用do-while语句;如果使用while循环,那么这些语句必须循环前和循环内部出现
示例
import java.util.Scanner;
public class Test4_1dowhile {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int number=(int) (Math.random()*101);
int num=0;
do{
System.out.print("Enter a guess:");
num=scanner.nextInt();
if(num<number){
System.out.println("too low");
}else if(num>number){
System.out.println("too high");
}
}while(num!=number);//num cannot be resolved to a variable
System.out.println("Yes it is "+number);
}
}
4.3 for语句
for循环具有编写循环的简明语法
for语句
for( 循环初始化 ; 循环继续条件 ; 循环间距){
循环体
}
示例打印直角三角形
public class Test {
public static void main(String[] args) {
/*
*
**
***
****
*****
*/
for(int i=1;i<=5;i++){
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
4.4嵌套循环
打印菱形
public class Test {
public static void main(String[] args) {
for(int i=1;i<=9;i++){
for(int k=1;k<=Math.abs(i-5);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&(i+j)<=10;j++){
System.out.print("* ");
}
System.out.println();
}
}
}
4.5 break和continue
beark:终止循环
continue:结束当前迭代,直接跳向该循环体的末尾
示例 判断回文
public class Test4 {
public static void main(String[] args) {
String s="上海自来水来自海上";
//0 1 2 3 4 5 6 7 8 角标
//m0~3
//n8~5
boolean flag=true;//默认是回文
for(int m=0,n=s.length()-1;m<s.length()/2&&n>s.length()/2;m++,n--){
if(s.charAt(n)!=s.charAt(m)){
// return;
flag=false;
break;
}
}
if(flag){
System.out.println("是回文");
}else{
System.out.println("不是回文");
}
System.out.println("最后要执行的代码,无论是不是回文");
}
}
小结:
1.三类循环;while do-while for
2.循环执行一次称为循环一次迭代
3.无线循环指循环语句被无限次执行
4.循环控制结构和循环体都必须考虑
5.while首先检查循环继续条件。为true则执行循环体
6.do-while先执行循环体,然后判断检查循环继续条件
7.while do-while常用于循环次数不确定的情况
8.for一般用在循环次数确定的情况下
9.break立即终止包含break的最内层循环
10.continue只是终止当前迭代