2.流程控制语句笔记

流程控制语句笔记

在项目里面,功能结构的实现有2中方式: 顺序结构 分支结构

分支结构

条件结构: 条件判断结构 条件选择结构

循环结构:

1. 条件判断结构

1.1 if…else (区间判断)

语法:
if(条件表达式 boolean){==> true
    //代码块
}[else{
    //代码块
}]
 //判断一个学生成绩  >90 给与奖励
//动态录入学生相关的信息
int score = 99;
if(score>=90){
    System.out.println("优秀,给与奖励");
}else{
    System.out.println("一般");
}

1.2 if…elseif…else

语法: 有且只执行一个if
 if(){
     
 }else if(表达式){
     
 }
....n个
  else{
        
  }
if(score>=90){
            System.out.println("优秀");
        }else if(score>=80){
            System.out.println("良好");
        }else if(score>=60 ){
            System.out.println("中等");
        }else{
            System.out.println("差");
        }

1.3 if…else 嵌套


1.4 Scanner

动态读取在控制台录入的数据。 jdk提供一个工具类。 java.util.Scanner

导包: 导入==(import)==类/接口等所在位置。

 public static void main(String[] args) {
        //动态录入学生相关的信息
        //数据都是不同数据类型的
        //1.创建Scanner的变量(键盘录入的变量)
        Scanner input = new Scanner(System.in);// alt+enter
        //2.使用变量读取录入的不同类型的数据
        System.out.println("请录入学生的姓名:");
//        String stuName = input.next();
        String stuName = input.nextLine();

        System.out.println("请录入"+stuName+"的年龄:");
        int stuAge = input.nextInt();//阻塞

        System.out.println("请录入"+stuName+"的成绩:");
        double stuScore = input.nextDouble();

        System.out.println("stuAge:"+stuAge);
        System.out.println("stuScore:"+stuScore);
    }
public static void main(String[] args) {

        //1.创建Scanner的变量(键盘录入的变量)
        Scanner input = new Scanner(System.in);// alt+enter

        //2.使用变量读取录入的不同类型的数据
        System.out.println("请录入学生的姓名:");
//        String stuName = input.next();
        //next() nextInt() nextDouble() 只能读取空格之前的内容 光标依然在空格之后

        String stuName = input.nextLine();// 读取一整行的数据 并换行

        System.out.println(stuName);

//        int str = input.nextInt();// 规定我们必须录入整数的数据
//        System.out.println(str);//读取光标之后的数据   Exception in thread "main" java.util.InputMismatchException (运行时异常)
    }

2. 条件选择结构 switch(等值判断)

switch(表达式){==>结果的数据类型: byte short int char String(JDK1.7)  enum(枚举)
    case1:
         //逻辑
     [break;//结束(跳出)switch语句]
   case2:  
         //逻辑
     [break;]
    ....
  [ default:
       //逻辑
    break;
   ]     
}
public static void main(String[] args) {
        //通过月份求出季节
        Scanner input = new Scanner(System.in);
        System.out.println("请录入月份(1-12):");
        String month1 = input.nextLine();
        switch (month) {
                case 12:
                case 1:
                case 2:
                    System.out.println("冬季");
                    break;
                case 3:
                case 4:
                case 5:
                    System.out.println("春季");
                    break;
                case 6:
                case 7:
                case 8:
                    System.out.println("夏季");
                    break;
                case 9:
                case 10:
                case 11:
                    System.out.println("秋季");
                    break;
                default:
                    System.out.println("录入的数据有误");
                    break;
            }
}
//字符串相互比较
public static void main(String[] args) {

        String username ="admin";//常量池内存的地址值 123

        String str1 = new String("abc");//37632

        Scanner input = new Scanner(System.in);
        System.out.println("请录入用户名:");
        String name = input.nextLine();//堆

        //判断录入的用户名是否是一致的
        System.out.println("name:"+name);
        //字符串之间的比较使用equals  是String类里面的功能
        if (username.equals(name) ) {// == 地址值不一样
            System.out.println("登录成功");
        }else{
            System.out.println("登录失败");
        }
}

3. 循环结构

3.1 while

while(循环条件){
    //循环体
}
//避免出现死循环  一定要有结束循环的条件
        //输出10次“循环”
        int num = 1;
        while(num<=10){
            System.out.println("循环"+num);
            //修改num变量的数据
            num++;//num = num+1;
        }

public static void main(String[] args) {

        //用户执行登录  用户名完全匹配的时候
        //失败  让用户多次去执行登录的功能
        String username ="admin";
        Scanner input = new Scanner(System.in);
        //循环体  循环条件   结束循环的条件
        String name = "";//不能初始化给null
        while(true) {//NPE  java.lang.NullPointerException  肯定是某个变量的数据为null(引用数据类型)

            System.out.println("请录入用户名:");
            name = input.nextLine();
            if (!name.equals(username)) {
                System.out.println("登录失败,请重新登录!");
            }else{
                System.out.println("登录成功了!欢迎你:"+name);
                //循环结束了
                //控制循环流程  break
                break;//结束循环
            }
        }

3.2 do…while

do{
   //循环体    
}while(循环条件);
Scanner input = new Scanner(System.in);
        //使用  do...while实现
        String answer;
        do{
            System.out.println("韩梅梅,怎么样,可以了吗y/n");
            answer= input.nextLine();//赋值
            if("y".equals(answer)){
                break;
            }
            System.out.println("早上5点练声,上午练钢琴,下午到声乐老师家练习唱歌,晚上练习舞蹈基本功");
        }while("n".equals(answer));//扩大answer变量的作用域

        //无论是否满足循环条件  至少会执行一次循环体   优先选择while
        
        System.out.println("很棒!");

3.3 while 案例

//动态录入班级人数和学员成绩,计算班级学员的平均成绩
        Scanner input = new Scanner(System.in);
        System.out.println("动态录入班级人数:");
        int studentNum = input.nextInt();

        int count = 1;
        double sum = 0;
        while(count<=studentNum){
            System.out.println("请录入第"+count+"个学员的成绩:");
            int score = input.nextInt();
            sum+=score;
            count++;
        }
        double avg = sum/studentNum;
        System.out.println("班级学员的平均成绩:"+avg);

//2019年苹果手机售出10万,每年增长45%,请问按此增长速度,到哪一年苹果手机的出货量将达到100万
        int year = 2019;
        int sale = 100000;
        do{
            //每年增长45%
            sale+=sale*0.45;
            year++;
        }while(sale<=1000000);

        System.out.println("到"+year+"苹果手机的出货量将达到100万"+sale);

3.4 for(优先使用)

for([表达式1];循环条件;[表达式3]){
    //循环体
}
表达式1: 初始化变量  有且只运行一次
表达式3: 动态修改变量的数据 
    int count = 1,num=100;
for (;count<=10;count++){
    System.out.println("我喜欢java"+count);
}
System.out.println(count);

3.5 for循环嵌套

打印一个: 九九乘法表
//        for (int i = 1; i <= 9; i++) {
//            //打印输出每一行的内容
//            for (int j = 1; j <= i; j++) {
//                System.out.print(j+"*"+i+" = "+(j*i)+"\t");
//            }
//            System.out.println();//换行
//        }

3.6 关键字

1. break

必须与switch与循环语句进行结合使用。 遇见break,结束(跳出)switch或者循环语句

2. continue

只能运用在循环语句: 跳过本次循环 继续执行剩下的循环

3. return 返回

可以使用在程序的任意地方 遇见return 整个逻辑(方法)就结束

return;

return 数据; 方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值