流程控制

流程控制
if
根据条件,选择性的执行某段代码,就需要用到流程控制语句,对应的流程控制语句有:
1.if...esle语句
2. switch语句
对于“需要先判断条件,条件满足后才执行的情况”就需要用if条件语句
if语句
格式
if(条件){条件成立才执行代码块}
if...else语句
格式
if(条件){条件成立才执行代码块}
else{条件不成立执行代码块}
例题:判断闰年
Scanner scanner=new Scanner(System.in);
System.out.println("请输入年份:");
int year=scanner.nextInt();
if(year%4==0&&year%100!=0||year%400==0){
System.out.println("你输入的年份"+year+"是闰年");
}
else{
System.out.println("你输入的年份"+year+"不是闰年");
}
多重if语句
多重if语句,在条件1不满足的情况下,才会执行条件2的判断,当前面条件均不成立时才会执行else代码块
嵌套if
switch
当需要进行等值判断时,使用switch语句更加简洁与方便
语法:
switch(表达式){
case 值1:
执行代码块1
break;
case 值2:
执行代码块2
break;
。。。。
default:
执行代码块
break:
}
执行过程:当switch表达式的值和case语句后面的值相同时,从位置开始向下执行,直到遇到break语句结束:如果没有匹配的case语句则执行default块的代码
注意:1.switch后面小括号中的表达式的值只能是( byte,short,int,char,string,枚举
2.case后面的值可以是常数,也可以是常量表达式;但是需要注意的是表达式不能含有变量
3.case匹配后,执行匹配块里的程序,如果没有遇见brake会继续执行下一个case块的内容,直到遇到Break语句
/*
    * 需求 : 从控制台接收年 , , ,
    * 判断这一天是当年的第几天
    * 大月 [31 ]:1,3,5,7,8,10,12
    * 小月 [30 ]:4,6,9,11
    * 2 月需要判断
    */
   public static void main(String[] args ) {
      Scanner scanner = new Scanner(System. in );
      System. out .println( " 请输入年份 :" );
      // 获取输入的年份
      int year = scanner .nextInt();
      System. out .println( " 请输入月份 " );
      // 获取输入的月份
      int month = scanner .nextInt();
      System. out .println( " 请输入日期 " );
      // 获取输入的日期
      int day = scanner .nextInt();
      // 计算总天数
      int daySum =0;
      switch ( month ) {
      case 12:
         daySum +=30;
      case 11:
         daySum +=31; //daySum = daySum+31;
      case 10:
         daySum +=30;
      case 9:
         daySum +=31;
      case 8:
         daySum +=31;
      case 7:
         daySum +=30;
      case 6:
         daySum +=31; //5
      case 5:
         daySum +=30;
      case 4:
         daySum +=31;
      case 3: // 相当于在 3 月份中判断 2 月份的天数
         daySum +=28; 
         if (( year %4==0)&&( year %100!=0)||( year %400==0)){
            daySum +=1; //daySum+1
         }
      case 2:
         daySum +=31;
      case 1:
         daySum += day ;
         break ;
      default :
         System. out .println( " 非法输入 !!!" );
         break ;
      }
      System. out .println( " 输入的日期是 " + year + " 年的第 " + daySum + " " );
}

循环语句
while语句
语法:while(条件){循环操作}
注意:1.判断while后面的条件是否成立(true/false)
2.当条件成立时,执行循环内的操作代码,然后执行1,2动作,直到循环条件不成立为止
特点: 先判断,再执行
Eg:使用while循环,求1~100的和
do while
语法:do{
循环体
}while(条件)
注意:1.先执行一遍循操作,然后判断条件是否成立
2.如果循环条件成立,则继续执行循环体,直到循环条件不成立为止
特点:先执行,后判断
面试题:while和do..while的区别?
while:先判断循环条件在执行
do..while:先执行循环体,再判断循环条件(至少执行一次)
for循环
语法:for(表达式1;循环条件;表达式2){}
注意:1.for关键字和面括号中的三个表达式必须用分号隔开-->可以省略表达式1,表达式2
2.循环条件部分可以使用逻辑运算符组合的表达式,表示复杂的运算条件,但一定要注意运算符的优先级
break语句
break语句主要用于退出指定的循环
Eg:使用循环输出1-10的数值,如果数值大于2并且为3的倍数则停止输出
for(int i=1;i<=10;i++){
if(i>2&&i%3==0)break;
System.out.println(i);
}
continue语句
continue语句作用是跳出本次循环中剩余的语句而执行下一次循环
Eg:打印100以内所有的偶数
for(int i=1;i<=100;i++){
if(i%2!=0){
continue;
}
System.out.println(i);
}
注意:1,break只能用于Switch语句和循环语句中
2,continue只能用于循环语句中
3,二者类似,continue是终止本次循环,继续下一次的循环,而break是直接终止循环
4,break,continue不能有其他语句,因为程序永远不会执行其后的语句









基于html+python+Apriori 算法、SVD(奇异值分解)的电影推荐算法+源码+项目文档+算法解析+数据集,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 电影推荐算法:Apriori 算法、SVD(奇异值分解)推荐算法 电影、用户可视化 电影、用户管理 数据统计 SVD 推荐 根据电影打分进行推荐 使用 svd 模型计算用户对未评分的电影打分,返回前 n 个打分最高的电影作为推荐结果 n = 30 for now 使用相似电影进行推荐 根据用户最喜欢的前 K 部电影,分别计算这 K 部电影的相似电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now 根据相似用户进行推荐 获取相似用户 K 个,分别取这 K 个用户的最喜爱电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now Redis 使用 Redis 做页面访问次数统计 缓存相似电影 在使用相似电影推荐的方式时,每次请求大概需要 6.6s(需要遍历计算与所有电影的相似度)。 将相似电影存储至 redis 中(仅存储 movie_id,拿到 movie_id 后还是从 mysql 中获取电影详细信息), 时间缩短至:93ms。 十部电影,每部存 top 5 similar movie 登录了 1-6 user并使用了推荐系统,redis 中新增了 50 部电影的 similar movie,也就是说,系统只为 6 为用户计算了共 60 部电影的相似度,其中就有10 部重复电影。 热点电影重复度还是比较高的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值