第4天 流程控制语句与函数初识

第4天 流程控制语句与函数初识

1. switch语句

a)switch语句的格式:

    switch(你的选择){

       case值1:

           符合值1执行的代码

           break;

       case值2:

           符合值 2执行的代码

           break;

       case值3:

           符合值 3执行的代码

           break;

       case值4:

           符合值 4执行的代码

           break;

       ......

       default:

           你的选择都符合上述的选项时执行的代码;

           break;

    }

2)switch语句要注意的事项

    1.switch语句使用的变量只能是byte、 char、 short、int、 String数据类型,String数据类型是从jdk7.0的时候开始支持的。

    2. case后面跟 的数据必须是一个常量。 

    3.switch的停止条件:

       switch语句一旦匹配上了其中的一个case语句,那么就会执行对应的case中的语句代码,执行完毕之后如果没有

       遇到break关键字或者是结束switch语句的大括号,那么switch语句不会再判断,按照代码的顺序从上往下执行

       所有的代码。直到遇到break或者是结束siwitch语句的大括号为止。

    4. 在switch语句中不管代码的顺序如何,永远都是会先判断case语句,然后没有符合的情况下才会执行default语句。

3) if--elseif---else if 语句与switch语句非常的相似:

ü  switch语句的优点:switch语句的结构清晰。

ü  switch缺点:如果 判断的条件是一个区间范围的,使用switch操作就非常的麻烦了。

2.switch语句的练习

import java.util.Scanner;
class Demo4
{
    public static void main(String[] args)
    {
       System.out.println("请输入一个月份:");
       //创建一个扫描器
       Scanner scanner = new Scanner(System.in);
       //调用扫描器的nextInt方法
       int month = scanner.nextInt();
       switch(month){
           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;
           case 12:
           case 1:
           case 2:
              System.out.println("冬天");
              break;
           default:
              System.out.println("没有对应的季节");
              break;
       }
    }
}

3.while循环语句

1)while循环 语句的格式:

    while(循环的条件){

       循环语句;

    }

2)while循环语句要注意的事项:

    1.while循环语句一般是通过一个变量控制其循环的次数。

    2. while循环语句的循环体代码如果只有一个语句的时候,那么可以省略大括号。但是也是不建议大家省略。

    3.while循环语句的判断条件后面不能跟有分号,否则会影响到执行的效果。

2)需求: 在控制上打印五句helloworld.

*/

class Demo5

{

    publicstatic void main(String[] args)

    {

        int count = 0;

        while(count<5){

           System.out.println("HelloWorld!");

           count++;

        }

    }

}

3)计算1+2+3+….+100的总和

public class Demp6 {
    public static void main(String[] args) {
       int num=1;
       int sum=0;//定义一个变量用于保存每次相加的结果
       while (num<=100) {
           sum+=num;
           num++;
       }
       System.out.println("sum="+sum);
    }
}

4-while循环的联系

/*
步骤:
    1. 创建一个随机数对象。
    2. 调用随机数对象的nextInt方法。
    3. 导包。
*/
class Demo7 {
    public static void main(String[] args){
       int num = 1;
       int sum = 0;  //定义一个变量用于保存每次相加的总和。
       while(num<=100){ // num = 1
           if(num%7==0){
              sum = sum+num;
           }
           num++;
       }
       System.out.println("总和是:"+ sum);
    }
}

实现猜数字游戏, 如果没有猜对可以继续输入你猜的数字,如果猜对了停止程序

class Demo8 {
    public static void main(String[] args)
    {
       //创建一个随机数对象
       Random random = new Random();
       //调用随机数对象的nextInt方法产生一个随机数
       int randomNum = random.nextInt(10)+1; //要求随机数是 1~10
       //创建一个扫描器对象
       Scanner scanner = new Scanner(System.in);
       while(true){
           System.out.println("请输入你要猜的数字:");
           //调用扫描器的nextInt方法扫描一个数字
           int guessNum = scanner.nextInt();
           if (guessNum>randomNum){
              System.out.println("猜大了..");
           }else if(guessNum<randomNum){
              System.out.println("猜小了..");
           }else{
              System.out.println("恭喜你,猜对了`.."); 
              break;
           }
       }
    }
}

5-do-while循环语句

格式:

    do{

    }while(判断条件);

需求: 在控制上打印五句hello world.

while循环语句与do-while循环语句的区别:

while循环语句是先判断后执行循环语句的,do-while循环语句

是先执行,后判断。不管条件是否满足至少会执行一次。

int count = 0;
do
{
    System.out.println("hello world");
    count++;
}while(count<5);
/**
 * 使用do-while算出1-100之间偶数的总和
 * ClassName: Demo10.java
 * 创建人: xiongpan
 * 时间 2016年10月27日.下午9:02:45
 *@version 1.0.0
 */
public class Demo10 {
    public static void main(String[] args) {
       int num=1;
       int sum=0;//定义一个变量用于保存每次相加的值
       do {
           if (num%2==0) {
              sum+=num;
           }
       } while (num<101);
       System.out.println("sum="+sum);
    }
}

6-for循环语句

for循环语句的格式:

    for(初始化语句;判断语句;循环后的语句){

       循环语句;

    }

for循环语句 要注意的事项:

    1. for(;;)这种写法 是一个死循环语句,相当于while(true);

    2. for循环语句的初始化语句只会执行一次,只是在第一次循环的时候执行而已。

    3. for循环语句的循环体语句只有一句的时候,可以省略大括号不写。但是不建议省略。

int count = 0 ;
       for(System.out.println("初始化语句A");count<5 ;System.out.println("循环后的语句C")){
           System.out.println("循环体语句B");
           count++;
}

7.for循环的练习

a.需求: 在控制台上打印一个 五行五列矩形/.
    *****
    *****
    *****
    *****
    *****
public class Demo12 {
    public static void main(String[] args) {
       for(int j = 0 ; j<5 ; j++){ //  控制行数
           for(int i = 0 ; i<5 ; i++){ // 控制列数
              System.out.print("*");
           }  // *****
              //换行
           System.out.println();
       }
    }
}
b.在控制台上打印一个正立的直角三角形
*
**
***
****
*****
多行多列的图形。
行数 5行
列数: 会发生变化 的.
分析列数:
    i = 0 ; i<5; j=0 ; j<=i 1个星号
    i = 1 ; i<5 ;j=0 ; j<=1 2个星号
    i = 2 ; i<5; j=0 ; j<=2   3个星号
    .....
*/
class Demo13
{
    public static void main(String[] args)
    {
       for(int i = 0 ; i< 5 ; i++){
           for(int j = 0 ; j<=i ; j++){ //控制列数
              System.out.print("*");
           }
           //换行
           System.out.println();
       }
    }
}
c.需求: 在控制台上打印一个正立的直角三角形 。
*
**
***
****
*****
多行多列的图形。
行数 5行
列数: 会发生变化 的.
分析列数:
    i = 0 ; i<5; j=0 ; j<=i 1个星号
    i = 1 ; i<5 ;j=0 ; j<=1 2个星号
    i = 2 ; i<5; j=0 ; j<=2   3个星号
    .....
*/
class Demo13
{
    public static void main(String[] args)
    {
       for(int i = 0 ; i< 5 ; i++){
           for(int j = 0 ; j<=i ; j++){ //控制列数
              System.out.print("*");
           }
           //换行
           System.out.println();
       }
    }
}

8.转义字符

特殊字符使用””把其转化成字符的本身输出,那么使用””的字符称作为转移字符。

需求:使用输出语句,打印出带引号的信息例如输出。

System.out.println("teachersaid"java is fun"");编译是无法正常通过的。语法有错误,编译器读到第二个引号就认为是字符串的结束,剩余的不知道怎么处理。如何解决这个问题:java中使用转义字符来表示特殊的字符。一个转义字符以反斜杠()开始。

     问题:想要打印带引号的字符串怎么办,就可以使用反斜杠()后跟字符,这个反斜杠就是转义字符。

转义字符

名称

Unicode

b

Backspace (退格键)

u0008

t

Tab   (Tab键盘)

u0009

n

Linefeed (换行)

u000A

r

Carriage Return(回车)

u000D

\

Backslash  (反斜杠)

u005C

'

Single Quote (单引号)

u0027

"

Double Quote (双引号)

u0022

r 表示接受键盘输入,相当于按下回车。

n 表示换行。

t  制表符,相当于Table键

b 退格键,相当于Back Space

’ 单引号

’’ 双引号

\ 表示一个斜跨

上述问问题解决:System.out.println("teachersaid"java is fun"");

注意:换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符

打印一个九九乘法表

class Demo15
{
    public static void main(String[] args)
    {
       for(int i = 1 ; i<=9 ; i++){
           for(int j = 1 ; j<=i ; j++){ //控制列数
              System.out.print(i+"*"+j+"="+i*j+"t");
           }
           //换行
           System.out.println();
       }
    }
}

9.break、continue关键字

1)break

break适用范围:只能用于switch或者是循环语句中。

break作用:

    1. break用于switch语句的作用是结束一个switch语句。

    2. break用于循环语句中的作用是结束当前所在的循环语句。

笔试题目:break目前位于内层的for循环,如何才能让break作用于外层 的for循环。

    可以标记解决

标记的命名只要符合标识符的命名规则即可。

class Demo17
{
    public static void main(String[] args)
    {
       aaa:for(int j = 0 ; j<3 ; j++){ // j=0 外层for循环
           bbb:for(int i = 0 ; i< 2 ; i++){  // i=0 内层for循环
              System.out.println("hello world"); // 1  
              break aaa;
           }
       }
    }
}

2)continue

continue的适用范围: continue只能用于循环语句。

continue的作用:continue的作用是跳过本次的循环体内容。继续下一次。

continue要注意的事项:

1. continue 也可以配合标记使用的。

2.如果continue出现在循环的末尾(最后一条语句),那么可以省略。

3.如果continue出现在循环的第一条语句,那么后面的语句都无法执行,所以编译报错。

class Demo18
{
    public static void main(String[] args)
    {
       /*
       for(int i = 0 ; i<5 ; i++){ // i=1  2
           if(i==1){
              continue;
           }
           System.out.println("hello "+i);
       }
       outer:for(int i = 0 ; i<3; i++){ // i= 0;  i =1 i=2 3
           inner:for(int j = 0 ; j<2 ; j++){ //j=0
              System.out.println("hello"); //1 2 3
              continue outer;
           }
       }
       需求: 计算1-100的偶数总和.
       */
       int sum = 0 ;
       for(int num = 1 ; num<=100 ; num++){
           if(num%2!=0){
              continue;  //如果是奇数就跳过本次循环。
           }
           sum  = sum+num;
       }
       System.out.println("总和:"+ sum);
    }
}


10.函数的基本概述

1)数的概述

发现不断进行加法运算,为了提高代码的复用性,就把该功能独立封装成一段独立的小程序,当下次需要执行加法运算的时候,就可以直接调用这个段小程序即可,那么这种封装形形式的具体表现形式则称作函数。

需求: 定义一个函数做加法功能,不需要返回结果给调用者,直接输出结果即可。
*/
    public static  void add(inta ,int b){
       int sum = a+b;
       System.out.println("结果:"+ sum);
    }

2)函数的格式

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)

    {

           执行语句;

           return 返回值;

    }

返回值类型: 运行这段程序得出的一个运算结果,结果类型,如果函数没有返回值则用void

            来表示该函数没有返回值。

函数名:仅仅是一个标识符,可以随意起名字。

形式参数:是一个变量,用于存储调用函数传递进来的实际参数。

实际参数:传递给形式参数的具体数值。

返回值:返回给调用者。

定义函数:

    1:是否有未知内容参与运算

    2:是否有运算结果(返回值)

public static int getMax(int x, int y) {
        int result;
       if (x > y) {
           result= x;
       } else {
           result= y;
       }
return result;
    }

解析:getMax方法

该方法方法名为:getMax,方法的作用是获取找出两个整数中较大的值。该方法有两个int型参数,:x和y,方法返回两个数中较大的一个。

public static 是方法的修饰符

int 是方法的返回值类型

getMax 是方法的方法名

(intx,int y)是参数列表,x和y是形式参数。

{} 花括号内的代码是方法体

return result;result 是返回值。

方法定义完成之后,如何调用一个方法?

函数调用:

    想要使用方法,必须调用它。

public static void main(String[] args) {

       int max = getMax(5, 7);

       System.out.println(max);

}

一:在main方法中调用getMax()方法,5和7就是给该方法传递的实际参数。如果方法有返回值,可以定义一个变量接收返回值,变量类型和方法返回值类型一致。本例中通过int类型变量max接收了getMax方法的返回值。

完整程序

这里的getMax(i, j); i和j就是实际参数。

/*
函数的定义格式:
    修饰符  返回值类型  函数名(形式参数..){
       需要被封装的功能代码;
       return 结果;
    }
如何定义一个函数:
    1. 返回值类型。
    2. 是否存在未知的参数(是否存在要由调用者确定的参数)。---->形式参数
*/
class Demo2
{
    public static void main(String[] args)
    {
       //System.out.println("Hello World!");
       //int max = getMax(14,5); //调用了函数   实际参数
       //System.out.println("最大值:"+ max);
       getMax(3,7);
    }
   
    //需求2:定义一个函数比较两个int类型的数据大小, 不需要把最大值返回给调用者,直接打印即可。
    public static void getMax(int a, int b){
       int max = 0; //定义一个变量用于保存最大值的
       if(a>b){
           max = a;
       }else{
           max = b;
       }
       System.out.println("最大值:"+ max);
    }
/*
 
    //需求1: 定义一个函数比较两个int类型的数据大小, 把最大值返回给调用者。
    public static int getMax(int a, int b){  // 形式参数
       int max = 0; //定义一个变量用于保存最大值的
       if(a>b){
           max = a;
       }else{
           max = b;
       }
       return max;   //把结果返回给调用者
    }
*/
 
}

11.函数的练习

/*

需求1:定义一个函数判断一个分数的等级,把分数的等级返回给调用者。

           "A等级"”B等级“

 

如何 定义函数:

    1. 返回值类型。  String

    2. 未知的参数--->形式参数。  分数

需求2:定义一个函数打印一个乘法表,不需要返回任何数据。

    1. 返回值类型。  void

    2. 未知的参数--->形式参数。  到底是什么乘法表

函数的特点:

    1. 函数的作用就是把一个功能代码给封装起来,已达到提高功能代码的复用性。

    2. 函数定义好之后是需要被调用才会执行的。

    3. 如果一个函数没有返回值返回给调用者,那么返回值类型必须是使用void表示。

*/

class Demo3
{
    public static void main(String[] args) {
       //String result = getGrade(189);
       //System.out.println(result);
       print(7);
    }
    //需求2: 定义一个函数打印一个乘法表,不需要返回任何数据。
    public static void print(int row){
       for(int i = 1 ; i<= row ; i++){
           for (int j = 1 ;j<=i ;j++ ){
              System.out.print(i+"*"+j+"="+i*j+"t");
           }
           //换行
           System.out.println();
       }
    }
    //需求1: 定义一个函数判断一个分数的等级,把分数的等级返回给调用者。
    public static String getGrade(int score){
       String grade = "";   //定义一个变量存储等级
       if(score>=90&&score<=100){
           grade = "A等级";
       }else if(score>=80&&score<=89){
           grade = "B等级";
       }else if(score>=70&&score<=79){
           grade = "C等级";
       }else if(score>=60&&score<=69){
           grade = "D等级";
       }else if(score>=0&&score<=59){
           grade = "E等级";
       }else{
           grade = "补考等级";
       }
       return grade; //把等级返回给调用者
    }
   
}


相关内容推荐