Java入门第一章——编程语言基础:控制语句

控制语句

*选择结构:if,if…else;switch

*循环结构:for;while;do…while

*控制循环的语句:break;continue

1.分支语句/条件控制语句:if,if…else

(1)if的语法结构:

第一种:


if(布尔表达式){
    //布尔表达式为true进入到这个分支
    java语句;
    java语句;
    java语句;
    ……
}

第二种:

if(布尔表达式){
    //布尔表达式true进入到这个分支
    java语句;
    ……
}else{
    //布尔表达式false进入到这个分支
    java语句;
    ……
}

第三种:

if(布尔表达式1){
    //布尔表达式1为true进入到这个分支
    java语句;
    ……
}else if(布尔表达式2){
    //布尔表达式2为true进入到这个分支
    java语句;
    ……
}else if(布尔表达式3){
    //布尔表达式3为true进入到这个分支
    java语句;
    ……
}……

第四种:

if(布尔表达式1){
    //布尔表达式1为true进入到这个分支
    java语句;
    ……
}else if(布尔表达式2){
    //布尔表达式2为true进入到这个分支
    java语句;
    ……
}else if(布尔表达式3){
    //布尔表达式3为true进入到这个分支
    java语句;
    ……
}……else{
    //所有if分支进不去,进入到这个分支
    java语句;
    ……
}

(2)对于java中的if语句来说,只要有一个分支执行,整个if语句全部结束。

(3)带有else分支可以保证一定会有分支执行。

(4)所有控制语句都是可以在合理情况下嵌套使用的。

if(){
    if(){……}
}else{
    if(){……}else{……}
}

注意:嵌套使用时候代码格式要保证完美,该缩进时候必须缩进。(方便看)

(5)当分支中只有一个语句时候,可以省略大括号,但是有多个语句的时候不能省略。

//写法一:if(布尔表达式) java语句; else java语句;
if(布尔表达式)
    java语句;
else 
    java语句;

练习需求1:所在位置的五公里范围内有肯德基的话,去KFC吃午饭

public class IfTest{
    public static void main(String[] args){
        
        //公里数
        double distance = 6.0;//单位km
        //判断
        if(distance < 5 ){
            System.out.println("去KFC吃午饭");
        }else{
            System.out.println("不去");
        }
    }
}

练习需求2:给一个成绩,成绩可能带小数点,根据学生成绩给等级[90-100]A;[80-90)B;[70-80)C;[60-70)D;[0-60)E。使用if语句完成

public class IfTest{
    public static void main(String[] args){
        double grade = 60; //成绩
        if(grade<0 || grade >100){
            System.out.println("您输入的成绩超出范围");
        }else if(grade>=90) {
            System.out.println("A");
        }else if(grade>=80){
            System.out.println("B");
        }else if(grade>=70){
            System.out.println("C");
        }else if(grade>=60){
            System.out.println("D");
        }else if(grade <60){
            System.out.println("E");
        }else{
            System.out.println("成绩输入错误");
        }
    }
}

练习需求3:给定一个人的年龄[0-150],根据年龄判断人处于生命哪个阶段。[0-5]幼儿;[6-10]少儿;[11-18]青少年;[19-35]青年;[36-55]中年;[56-150]老年

写法1

import java.uitl.Scanner;
public class IfTest{
    public static void main(String[] args){
         Scanner sc = new Scanner(System.in);
        int age = sc.nextInt();
        if(age<0 ||age>150){
            System.out.println("提供的年龄不合法,要在[0-150]之间");
        }else if(age>=56){
            System.out.println("老年");
        }else if(age >= 36){
            System.out.println("中年");
        }else if(age >=19){
            System.out.println("青年");
        }else if(age >=11){
            System.out.println("青少年");
        }else if(age >=6){
            System.out.println("少儿");
        }else{
            System.out.println("幼儿");
        }
    }
}

写法2

import java.util.Scanner;
public class IfTest{
        Scanner sc = new Scanner(System.in);
        int age = sc.nextInt();
        String str;
        if(age<0 ||age>150){
            str = "没有这个年龄段";
        }else if(age>=56){
            str = "老年";
        }else if(age >= 36){
            str ="中年";
        }else if(age >=19){
            str ="青年";
        }else if(age >=11){
            str ="青少年";
        }else if(age >=6){
            str ="少儿";
        }else{
            str ="幼儿";
        }
        System.out.println(str);
}

接收用户键盘输入的方法:

*System.out.println(); 负责想控制台输出【 从内存到控制台,输出的过程,这是从内存中出来了】

*接收用户键盘输入,从“键盘”到“内存”。【输入过程,到内存中去】

public class KeyInputTest{
    public static void main(String[] args){
        //创建键盘扫描器对象
        java.util.Scanner s = new java.util.Scanner(System.in);
        //调用Scanner对象的next方法开始接收用户键盘输入
        //程序执行到这里会停下来,等待用户输入,用户输入完成按Enter(回车)时,键入的信息会自动赋值给定义的变量。
        //语法格式:String userInputContent = s.next();
        int num = s.nextInt();
    }
}

另一种写法:

import java.util.Scanner;
public class KeyInputTest{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        String userInputContent = s.next();
        //int num = s.nextInt();
    }
}

练习需求4:判断当前天气,当时下雨时候—>带雨伞—>判断性别?男带一把大黑伞:女带一把小花伞。

​ 当晴天时候—>当天气温度在30度以上—>判断性别?男带墨镜:女擦防晒霜。

​ 要求:天气状况、温度、性别从键盘输入。

import java.util.Scanner;
public class IfTest{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String weather = sc.next();
        int temperature = sc.nextInt();
        String sex = sc.next();
        if(weather.equals("雨天")){
            if(sex.equals("男")){
                System.out.println("请带一把大黑伞");
            }else if(sex.equals("女")){
                System.out.println("请带一把小花伞");
            }else {
                System.out.println("性别有误");
            }
        }else if(weather.equals("晴天")){
            if(temperature >= 30){
                if(sex.equals("男")){
                    System.out.println("天气炎热,请戴墨镜");
                }else if(sex.equals("女")){
                    System.out.println("天气炎热,请擦防晒霜");
                }else {
                    System.out.println("性别有误");
                }
            }else {
                System.out.println("天气没有30度");
            }
        }else {
            System.out.println("输入的天气有误");
        }
    }
}

判断字符串相等办法:

由于String字符存储的是字面值的地址,直接用==来判断直接判断两个字符串的地址,这是错误的。如果要比较两个字符串中的值,需要用equals方法。

String a = "abc";
boolean b = a.equals("abc");
System.out.println(b); //true 这里是相等的

2.switch语句:switch属于选择结构,也是分支语句。

(1)语法规则(结构):

switch("int""String"类型的字面值或变量){
    case "int""String"类型的字面值或变量:
        java语句;
        ……
        break;
    case "int""String"类型的字面值或变量:
        java语句;
        ……
        break;
     case "int""String"类型的字面值或变量:
        java语句;
        ……
        break;
     case ……
     default:
       java语句; 
       …… 
}

(2)switch后面小括号当中的"数据"与case后面的"数据"按照从上到下进行匹配,匹配成功的分支执行。

(3)分支当中最后有"break;"语句的话,整个switch语句终止。如果没有直接进入下一个分支执行(不进行匹配)。这种叫case穿透现象。

(4)所有分支都没有匹配成功,当有default语句,会执行default分支当中的程序。

(5)switch后面和case后面只能是int或者String类型,不能是其他类型。

​ *当然,byte,short,char也可以直接写到switch和case后面,因为它们可以进行自动类型转换为int类型。

(6)case可以合并

int i = 10;
switch(i){
     case1:case2:case3:case10:
        System.out.println("Test Code!");
}

(7)注意long类型不能直接使用到Switch后面

public class SwitchTest{
    public static void main(String[] args){
        long x = 100L;
        //switch(x){}  编译报错,跟 int a = x;类似,需要进行强制类型转换
        //解决编译错误
        switch((int)x){}
        
        byte a = 10;
        switch(a){}  //可以编译,byte,short,char都可以
        
        //编译报错
        //switch(true){}
        
        String username = "coffee add ice";
        switch(username){} //可以编译
        
    }
}

练习需求1:写一个较完整的switch语句。接收用户输入:1表示星期一,2表示星期二……7表示星期日。

import java.util.Scanner;
public class SwitchTest{
    public static void main(String[] args){
       Scanner sc = new Scanner(System.in);
       int weekday = sc.nextInt();
       switch (weekday){
           case 1:
               System.out.println("周一");
               break;
           case 2:
               System.out.println("周二");
               break;
           case 3:
               System.out.println("周三");
               break;
           case 4:
               System.out.println("周四");
               break;
           case 5:
               System.out.println("周五");
               break;
           case 6:
               System.out.println("周六");
               break;
           case 7:
               System.out.println("周日");
               break;
           default:
               System.out.println("输入有误");
       }
    }
}

练习需求2:反过来,用户输入星期一返回1,输入星期二返回2……输入星期日返回7

public class SwitchTest{
    public static void main(String[] args){
        java.util.Scanner sc = new java.util.Scanner(System.in);
       String dayOfWeek = sc.next();
       switch (dayOfWeek){
           case "周一": case "星期一":
               System.out.println(1);
               break;
           case "周二": case "星期二":
               System.out.println(2);
               break;
           case "周三": case "星期三":
               System.out.println(3);
               break;
           case "周四": case "星期四":
               System.out.println(4);
               break;
           case "周五": case "星期五":
               System.out.println(5);
               break;
           case "周六": case "星期六":
               System.out.println(6);
               break;
           case "周日": case "星期日":
               System.out.println(7);
               break;
           default:
               System.out.println("输入非法");
       }
    }
}

练习需求3:时间计算器中+,-,*,/,%。实现思路:数据从键盘输入,需要从控制台输入三次:第一个数字,运算符,第二个数字。

import java.util.Scanner;
public class SwitchTest{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("欢迎使用简单的计算机系统");
        System.out.print("请输入第一个数字:");
       int number1 = sc.nextInt();
        System.out.print("请输入运算符");
       String c = sc.next();
        System.out.print("请输入第二个数字:");
       int number2 = sc.nextInt();
       switch (c){
           case "+":
               System.out.println(number1 + c + number2 + "=" + (number1+number2));
               break;
           case "-":
               System.out.println(number1 + c + number2 + "=" + (number1-number2));
               break;
           case "*":
               System.out.println(number1 + c + number2 + "=" + (number1*number2));
               break;
           case "/":
               System.out.println(number1 + c + number2 + "=" + (number1/number2));
               break;
           case "%":
               System.out.println(number1 + c + number2 + "=" + (number1%number2));
               break;
           default:
               System.out.println("输入非法");
       }
    }
}

练习需求4:系统给定考生成绩,判断考生成绩等级。根据学生成绩[0-100],成绩可能带小数:等级[90-100]A;[80-90)B;[70-80)C;[60-70)D;[0-60)E。采用switch语句完成。

import java.util.Scanner;
public class SwitchTest{
    public static void main(String[] args){
         Scanner sc = new Scanner(System.in);
       double score = sc.nextDouble();
       if(score>= 0 && score<=100){
           int scoreTen = (int) (score / 10);
           switch (scoreTen){
               case 0: case 1: case 2: case 3: case 4: case 5:
                   System.out.println("成绩为E");
                   break;
               case 6:
                   System.out.println("成绩为D");
                   break;
               case 7:
                   System.out.println("成绩为C");
                   break;
               case 8:
                   System.out.println("成绩为B");
                   break;
               case 9: case 10:
                   System.out.println("成绩为A");
           }
       }else {
           System.out.println("输入不合法");
       }
    }
}

3.for循环语句

*循环结构:将需要反复执行/重复执行的代码放到“循环体”中,联合计数器共同控制这段需要反复执行的代码。

*基本上所有编程语言支持的循环:for循环;while循环;do…while循环

(1)for循环的语法结构:

for( 初始表达式; 布尔表达式; 更新表达式 ){
    //需要重复执行的代码片段【循环体】
}

(2)for循环的执行过程/原理:

①初始化表达式、布尔表达式、更新表达式都不是必须的【但是两个分号是必须的】

②初始化表达式最先执行,并且在整个for循环当中只执行一次

③布尔表达式只能是true/false,不能是其他值

④for执行过程:先执行初始化表达式【只执行一次】

​ 执行布尔表达式

​ 若为true执行循环体,执行完循环体再执行更新表达式。再执行布尔表达式。

​ 若为false结束。

public class ForTest{
    public static void main(String[] args){
        //打印输出1到10
        //写法一
        for(i=1;i<=10;i = i+1){
            System.out.println(i);
        }
        //写法二
        for(i=1;i<=10;i+=1){
            System.out.println(i);
        }
        //写法三
        for(i=1;i<=10;i++){
            System.out.println(i);
        }
        
        //死循环
        for(;;){
            System.out.println("死循环");
        }
    }
}

例子1:for循环中 “ i ” 【变量】的作用域

public class ForTest{
    public static void main(String[] args){
        //一下所有for循环中"i"变量作用域仅限于当前for循环内部使用
        for(int i = 0;i<10;i++){
            System.out.println("i->" + i);//打印了0到9
        }
         for(int i = 0;i<=10;i++){
            System.out.println("i-->" + i);//打印了0到10
        }
        //变量i作用域是for,在main方法中就不可访问
        //System.out.println("i=" + i);  这句在这里就会编译错误,找不到i
        
        //也可以在main方法中定义
        int i =0;
        for(;i<10;i++){
            System.out.println("i=" + i);//打印了0到9
        }
        System.out.println("i===>" + i);  //在经过循环后,i为10
    }
}

例子2:for循环常规写法

public class FortTest{
    public static void main(String[] args){
        //输出1~10中奇数
        for(int i=1;i<=10;i+=2){
            System.out.println(i);//1 3 5 7 9
        }
        //输出1~10中偶数
        for(int i=2;i<=10;i+=2){
            System.out.println(i);//2 4 6 8 10
        }
        //倒着写
        for(int i=10;i>0;i--){
            System.out.println(i);//10 9 8 7 6 5 4 3 2 1
        }
         for(int i=100;i>=50;i-=10){
            System.out.println(i);//100 90 80 70 60 50
        }
        //把i++【更新表达式】写到for循环里边
        for(int i=0;i<10;){
            System.out.println(i);//0 1 2 3 4 5 6 7 8 9
            i++;
        }
        
        //死循环
         for(int i=0;i<10;){
            System.out.println(i);
        }
    }
}

例子3:循环语句和条件判断语句嵌套使用【for和if嵌套】

public class ForTest{
    public static void main(String[] args){
        //需求:找出1~100所有奇数
        //方案一:从1开始,每次递增2
        for(int i =1;i<=100;i+=2){
            System.out.println(i);
        }
        //方案二:从1开始,以1递增,每个数据都进行判断【判断标准:数字对2求余数】
        for(int i =1;i<=100;i++){
            //判断i是否为奇数,是奇数输出
            //i%2 == 0为偶数
            //i%2 == 1为奇数
            //i%2 != 0为奇数
            if(i % 2 == 1){
                System.out.println(i);
            }
        }
    }
}

练习需求1:计算1~100所有奇数的和

public class ForTest{
    public static void main(String[] args){
        //运算符+=
        //定义一个变量【盒子】,初始值为0;
        int num = 0;
        for(int i =1;i<=100;i+=2){
            num = num +i;
            //也可以写成: num += i;
        }
        System.out.println(num);
    }
}

练习需求2:for循环嵌套for循环

public class ForTest{
    public static void main(String[] args){
        for(int i =1;i<=10;i++){
            //循环体重可以编写其他的控制语句
            //控制语句可以嵌套使用:if,if...else,switch,for……
            //for(int i =1;i<=10;i++){}  这里会编译错误,在for里边已经定义了i,不能在这里再定义一个i。
            for(int j =1 ;j<=10;j++){
                System.out.println(i*j);//执行了10【i】*10【j】= 100次
            }
        }
    }
}

练习需求3:使用for循环输出一个九九乘法表

public class ForTest{
    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 + "=" +(i*j) +'\t');
            }
            System.out.println('\n');
        }
    }
}

4.while和do…while循环

(1)while语法结构

while(布尔表达式){  //布尔表达式结果为true进入循环体,false循环结束
    循环体;
}

(2)while执行原理

先判断布尔表达式:

*true:执行循环体,重新判断布尔表达式

*false:循环结束

(3)while的循环次数

*0~N次,while循环的循环体可能一次都不执行

public class WhileTest{
    public static void main(String[] args){
        //死循环
        while(true){
            System.out.println("a");
        }
        System.out.println("coffee add ice"); //编译错误。由于上面的循环是死循环,编译到不了这一句
        
        //————————————分割线——————————————————————————————————————
        //下面重新起一个
        int i =10;
        int j = 3;
        while(i>j){//这个也是死循环
            Sysetm.out.println("a");/
        }
        System.out.println("coffee add ice");//上面是死循环,这里也编译不到这一句
    }
}

例子1:使用while循环输出1~10

public class WhileTest{
    public static void main(String[] args){
        int i =1;
        while(i<=10){
            System.out.println(i);
            i++;
        }
    }
}

例子2:比较while不同写法

public class WhileTest{
    public static void main(String[] args){
        int i =10;
        while(i>0){
            System.out.print(i-- + " "); //10 9 8 7 6 5 4 3 2 1

        }
        System.out.print('\n');
        System.out.println(i); //0
        System.out.println("---------");

        int j =10;
        while(j >=0){
            System.out.print(--j + " "); //9 8 7 6 5 4 3 2 1 0 -1
        }
        System.out.print('\n');
        System.out.println(j); //-1
        }
    }
}

(3)do…while

语法结构

do{
    循环体
}while(布尔表达式);

循环次数1~N次,至少一次。do…while最终有分号。也就是do会先做再循环。

public class DoWhileTest{
    public static void main(String[] args){
        int i = 10;
        do{
            System.out.println(i);
        }while(i>100);//这里会输出一个10再结束
        
        while(i>100){//这里直接结束
            System.out.println(i);
        }
        
        int j = 1;
        do{
            System.out.println(j);//1 2 3 4 5
            ++j;
        }while(j <=5);
    }
}

5.控制循环语句break

(1)break:在java中的关键字,翻译为“中断”。语法规则:break;

(2)break可以使用在switch语句中,用来终止switch语句执行,也可以使用在循环语句中,终止循环执行。

(3)break:使用在for,while,do…while循环语句用来跳出循环,终止循环执行。当程序循环到某个条件时,后续没必要继续执行。

(4)默认情况下,break语句终止它最近的循环语句

例子1:for循环

public class BreakTest{
    public static void main(String[] args){
        for(int i =0;;i++){ //这里布尔表达式不写表示这是个死循环
            if(i==5){
                break;
            }
            System.out.println(i); //0 1 2 3 4 
        }
        
        System.out.println("coffee add ice");//由于i=5就break,所以这句话能打印。
    }
}

例子2:嵌套for

public class BreakTest{
    public static void main(String[] args){
        for(int i=0;i<3;i++){
           for(int j=0;j<10;j++){
               if(j==5){
                   break;
               }
               System.out.print(j + " "); //0 1 2 3 4 0 1 2 3 4 0 1 2 3 4
           }
       }
    }
}

例子3:给for起名字

public class BreakTest{
    public static void main(String[] args){
        for1:for(int i=0;i<3;i++){
           for2:for(int j=0;j<10;j++){
               if(j==5){
                   break for1;
               }
               System.out.print(j + " "); //0 1 2 3 4
           }
       }
    }
}

6.控制循环语句continue

(1)continue表示:继续/go on /下一个

(2)continue也是一个关键字加一个分号,语法规则:continue;

(3)break和continue区别:

​ *break:所有循环终止,直接跳出循环。

​ *continue:本次循环终止,进行下一次循环。

public class ContinueTest{
    public static void main(String[] args){
        for(int i =1;i<=10;i++){
           if(i == 5){
               break;
           }
           System.out.print(i + " ");  // 1 2 3 4
       }
        System.out.println("\n-----------------");
       for (int j =1;j<=10;j++){
           if(j == 5){
               continue; //跳过当前的本次循环,进入下一次循环“继续”执行
           }
           System.out.print(j + " "); // 1 2 3 4 6 7 8 9 10
       }
    }
}

例子1:continue也可制定for循环名称

public class ContinueTest{
    public static void main(String[] args){
        for1:for(int i=1;i<=3;i++){
            for2:for(int j =1;j<=5;j++){
                if(j == 3){
                    continue for1;
                }
                System.out.print(j + " ");//1 2 1 2 1 2
            }
        }
    }
}

——本章节为个人学习笔记。学习视频为动力节点Java零基础教程视频:动力节点—JAVA零基础教程视频

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值