循环结构

循环类型

- while循环
语法:
int i=1;//循环的变量初始化
while(条件表达式){//条件i<=10
循环体语句;//输出语句i
//改变循环变量的值
i++;//++i
}

执行流程: 1)判断条件表达式的值,如果为true则执行循环体语句
2)改变循环变量的值,再次判断条件表达式的值,如果为true则执行循环体语句
改变循环变量的值,再次判断条件表达式的值,如果为true则执行循环体语句 …
3)直到某个时刻,改变循环变量的值之后,条件表达式的值为false则退出循环体语句 **-

do-while循环**
语法:
do
{
循环体语句;
}while(条件表达式);

执行流程: 1)先执行语句块一次
2)再计算条件表达式的值,如果为true,再次执行循环体语句,如此循环往复,直到条件表达式的值为false时,退出循环

- for循环
语法:
for(表达式1;表达式2;表达式3){
循环体语句4;
}
表达式1:循环变量的初始化 例如int i=1;
表达式2:条件表达式 i<=100
表达式3:改变循环变量的值

执行流程: 先1–>2—>4—>3—>2—>4…
直到某个时刻,3执行完毕时,表达式2的值为false,则退出for循环

三种循环的区别:

do-while至少会执行一次循环体
for和while只有在条件成立上才会去执行循环体
for和while的区别:控制条件语句中所控制的那个循环变量在for循环之后,就不被访问了,而while结束后,继续使用

关键字break和continue:

1.break的使用场景:
在选择结构 switch语句中
在循环语句中
离开使用场景的存在是没有意义的,不能单独使用
break作用:
循环中:跳出单层循环(当前所在循环)

2.continue:只能用在循环语句中
离开使用场景的存在是没有意义的
continue的作用:结束本次循环,进入循环的下一次

随机数的产生:

和前面Scanner一样,要先import一个包——import java.util.Random;
再创建一下——Random rd = new Random(); 称为将类实例化
int identifyCode = rd.nextInt(10); 定义了一个 identifyCode,并且产生一个0到9的随机数;
如果要产生1-10的随机数则再其后面加1

例:

计算n!,要求n从键盘输入。

public class Result{
	public static void main(String[] args) {
  	Scanner sc = new Scanner(System.in);
  	System.out.println("请输入你想要求阶乘的整数");
  	int num = sc.nextInt();
 	 int  result =1;
 	 //利用了for循环
  	for(int i=1;i<=num;i++)
  	{
  	 result*=i;
  	}
  	System.out.println("最后的结果为"+result);
 	}
}

例:

打印如下图形:要求行数从键盘录入(并做相关的条件约束)
*********
*******
*****
***
*
***
*****
*******
*********
程序最后:询问用户是否继续的情况

用了for循环和do - while循环

public class Triangle{
public static void main(String[] args) {
  boolean flag1;
  Scanner sc = new Scanner(System.in);

 //利用do循环是为了确保一定可以先执行一次
  do{
   System.out.println("请输入你想要的行数");
   int line = sc.nextInt();
   //输出上面的倒三角形
 	System.out.println("行数为奇数时的图形如下:");
    	for(int i=0;i<(line+1)/2;i++){       //上行数可直接除以2,取整
     		for(int j=0;j<i;j++){   //空格与行数的关系是少一
      		System.out.print(" ");
     		}
     		for(int k=line-2*i;k>0;k--){ //*号跟总行数的关系是两倍两倍的少
      		System.out.print("*");
     		}
     		System.out.println();
    	}
   	 //输出下面的正三角形
    	for(int i=0;i<(line-1)/2;i++){  //下三角一共(line-1)/2行
    		 for(int j=0;j<(line-1)/2-i-1;j++) 
    		 //下三角的空格数是下面的行数-i;{
     	 	System.out.print(" ");
     		}
     		for(int k=0;k<2*i+3;k++)  //每一行的*是比两倍的行数加3
     		{
     	 	System.out.print("*");
    	 	}
    	 }
     	System.out.println();
     	System.out.println("请输入你是否想继续:Y||N");
  	 String str1 = sc.next();
  	 flag1 = str1.equals("Y");
	 }while(flag1);     //利用了do while来确定是否还要继续,继续则再次循环
  	System.out.println("不进行继续,则退出");
    }
}

例:

模拟购物流程
在这里插入图片描述
这里用了do - while循环,还有switch进行选择

import java.util.Scanner;  //导入包
public class Shopping{
	public static void main(String[] args) {
	  //确定继续购买商品的
	  boolean flag;  
	  //用来计算每一次的总计
	  double sum = 0.0;
	  Scanner sc = new Scanner(System.in);
	  //打印菜单
	  System.out.println("****************************");
	  System.out.println("请选择购买的商品的编号:");
	  System.out.println("1.T恤      2.网球鞋      3.网球拍");
	  System.out.println("****************************");
	  System.out.println();
	  System.out.println("商品价格:");
	  System.out.println("T恤:450.0    网球鞋:570.0   网球拍:360.0");
	  
	  //进行一个do while的循环,首先执行一次购买过程
	  do{
		  System.out.println("请输入商品编号:");
		  int id = sc.nextInt();
		  //定义字符串时,要给它进行初始化
		  String things = null;
		  //定义双精度时,也要进行初始化;
		  double price =0.0;
		  double tshirtPrice = 450.0;
		  double shoesPrice = 570.0;
		  double racketPrice = 360.0;
		  //进行选择买哪件商品
		  switch(id){
		  case 1:
		   things = "T恤";
		   price = 450.0;
		   break;
		  case 2:
		   things = "网球鞋";
		   price = 570.0;
		   break;
		  case 3:
		   things = "网球拍";
		   price = 360.0;
		   break;
		   default:
		    System.out.println("选择序号有误,请重新选择");
		    break;
		  }
		  
		  System.out.println("请输入购买数量:");
		  int number = sc.nextInt();
		  
		  System.out.println(things+":¥"+price+"\t数量"
		  +number+"\t合计:¥"+(number*price));
		  //此处用来叠加最后的价格,sum定义在循环外,则一直有新值覆盖
		  sum += number*price;
		  
		  System.out.print("是否继续:Y/n\t");
		  String str = sc.next();
		   //字符串的比较
		  flag = str.equals("Y");     
		  }while(flag);    //循环语句的条件
	  System.out.println();      //打印一个换行
	  
	  //通过键盘接受要打的折扣
	  System.out.println("折扣:");
	  double discount = sc.nextDouble();
	  
	  System.out.println("应付金额"+sum*discount);
	  System.out.println("实付金额:");
	  double realMoney = sc.nextDouble();
	  System.out.println("找钱:"+(realMoney-sum*discount));
	 }
}
	```
	循环结构就酱紫?
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值