Java300集day03——控制语句

1.控制语句分为三类:顺序、选择、循环

2.continue:跳过本次循环,执行下一次;break:退出循环

3.带标签的continue和break

break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。

 4.语句块(有时叫做复合语句),是用花括号扩起的任意数量的简单Java语句。块确定了局部变量的作用域。块中的程序代码,作为一个整体,是要被一起执行的。块可以被嵌套在另一个块中,但是不能在两个嵌套的块内声明同名的变量。语句块可以使用外部的变量,而外部不能使用语句块中定义的变量,因为语句块中定义的变量作用域只限于语句块。

5.重载的方法,实际是完全不同的方法,只是名称相同而已!

      构成方法重载的条件:

      1.不同的含义:形参类型、形参个数、形参顺序不同

      2.只有返回值不同不构成方法的重载

      如:

1

int a(String str){}与 void a(String str){}

      不构成方法重载

      3.只有形参的名称不同,不构成方法的重载

      如:

1

int a(String str){}与int a(String s){}

      不构成方法重载

6.递归这个东西麻烦,我不想看他

总结:

1.从结构化程序设计角度出发,程序有三种结构:顺序结构、选择结构和循环结构

  2.选择结构

     (1)if单选择结构 if-else双选择结构 if-else if-else多选择结构

     (2)switch多选择结构

  3.多选择结构与switch的关系:当布尔表达式是等值判断的情况,可使用多重选择结构或switch结构,如果布尔表达式区间判断的情况,则只能使用多重选择结构

     (1) 循环结构

     (2)当型:while与for

     (3)直到型:do-while

  4.while与do-while的区别,在布尔表达式的值为false时while的循环体一次也不执行,而do-while至少执行一次

  5.break可以在switch与循环结构中使用,而continue只能在循环结构中使用

  6.方法就是一段用来完成特定功能的代码片段,类似于其它语言的函数

  7.方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会根据不同的参数自动匹配对应的方法

  8.任何能用递归解决的问题也能使用迭代解决。在要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存。

作业:

一、选择题a、bd、a、bd、b

  1.分析如下Java代码,编译运行的输出结果是( )。(选择一项)

1

2

3

4

5

6

7

8

9

10

11

public static void main(String[ ] args) {

    boolean a=true;

    boolean b=false;

    if (!(a&&b)) {

        System.out.print("!(a&&b)");

    }else if (!(a||b)) {

        System.out.println("!(a||b)");

    }else {

        System.out.println("ab");

    }

}

  A!(a&&b)

  B.!(a||b)

  C.ab

  D.!(a||b)ab

  2.下列选项中关于变量x的定义,( )可使以下switch语句编译通过。(选择二项)

1

2

3

4

5

6

7

8

9

10

11

12

13

switch(x) {

    case 100 :

        System.out.println("One hundred");

        break;

    case 200 :              

        System.out.println("Two hundred");                 

        break;

    case 300 :

        System.out.println( "Three hundred");

        break;

    default :

        System.out.println( "default");    

}

  Adouble x = 100;

  B.char x = 100;

  C.String x = "100";

  D.int x = 100;

  3.给定如下Java代码,编译运行的结果是( )。(选择一项)

1

2

3

4

5

6

7

8

9

10

11

12

13

public class Test { 

    public static void main(String[] args) {

        int sum=0;

        for(int i=1;i<10;i++){

            do{

                i++;

                if(i%2!=0)

                    sum+=i;

            }while(i<6);

        }

        System.out.println(sum);

    }

}

  A8

  B.15

  C.24

  D.什么也不输出

  4.以下选项中添加到代码中横线处会出现错误的是( )。(选择二项)

1

2

3

4

5

public class Test {

    public float aMethod(float a, float b) {

        return 0; 

    }                                       

}

  A.

1

2

3

public float  aMethod(float a, float b, float c) {

        return 0;

}

  B.

1

2

3

public float  aMethod(float c, float d) {

        return 0;

}

  C.

1

2

3

public int  aMethod(int a, int b) {

    return 0;

}

  D.

1

2

3

private int  aMethod(float a, float b) {

    return 0;

}

  5.以下关于方法调用的代码的执行结果是( )。(选择一项)

1

2

3

4

5

6

7

8

9

10

public class Test {

    public static void main(String args[]) {

        int i = 99;

        mb_operate(i);

        System.out.print(i + 100);

    }

    static void mb_operate(int i) {

        i += 100;

    }

}

  A.99

  B.199

  C.299

  D.99100

二、简答题

  1. if多分支语句和switch语句的异同之处。

  2. break和continue语句的作用。

  3. 在多重循环中,如何在内层循环中使用break跳出外层循环。

  4. 方法重载的定义、作用和判断依据。

  5. 递归的定义和优缺点。

三、编码题

  1. 从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。

  2. 编程求:∑1+∑2+……+∑100。

  3. 编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求数列的第40位数是多少。

答案:

第3章
一、选择题
1.A
2.BD
解析:switch的的判断表达式的数据类型:byte short int char
3.A
解析:0+3+5=8
4.BD
解析:函数重载时对返回数据类型不做检查,但形参数量或类型必须变化,B和原函数是同一函数,D中形参数据个数和类型和原函数相同
5.B
解析:非静态变量,形参并不影响实参.
二、简答题
1.答:相同点:他们都是用来处理多分支条件的结构。
不同点:switch语句只能处理等值条件判断的情况,而且条件只能是整型变量或字符型变量。多重if选择结构的限制,特别适合某个变量处于某个连续区间时的情况。
2.答:break是跳出循环,continue是直接进入下一次循环
3.答:使用break- label,先在循环之前加入一个label标签,然后break label;
4.答:定义:一个类中可以有多个相同名字的方法
作用:行为多态
判断依据:同方法名,不同的形参个数或数据类型
5.答:定义:方法自身调用自身
优点:代码简洁,可以省去很多循环
缺点:需要消耗大量计算机资源

三、编码题
1.
代码

/**
 * 1. 从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。
 */
import java.util.Scanner;
public class Homework1 {
    public static void main(String [] args){
        //输入一个十进制数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int num2 = sc.nextInt();
        //转换
        int num = num2;
        String str="";
        do{
            //除以2得到商
            int div = num/2;
            //得到余数作为二进制位
            int mod = num%2;
            str = mod + str;            
            //商作为被除数
            num = div;
        }while(num!=0);//被除数不是零        
        //输出二进制数
        System.out.println(num2+"------>"+str);        
    }
}

代码

/**
 * 2.编程求:∑1+∑2+……+∑100。
 * @author guo
 *
 */
public class Homework2 {
    public static void main(String[] args) {
        int sum_i=0;
        for(int i=1;i<=5;i++){
            int sum_j=0;
            for(int j=1;j<=i;j++){
                sum_j=sum_j+j;          
            }
            sum_i=sum_i+sum_j; 
        }
        System.out.println(sum_i);     
    }
}

代码

/**
 * 3. 编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求数列的第40位数是多少。
 * @author guo
 *
 */
public class Homework3 {
    public static void main(String[] args) {
        System.out.println(sum(40));
    }
    public static long sum(int n) {
        if (n <= 0) {
            return 0;
        } else if (n == 1 || n == 2) {
            return 1;
        } else {
            return sum(n - 1) + sum(n - 2);
        }
    }
}

 

发布了39 篇原创文章 · 获赞 8 · 访问量 1742

猜你喜欢

转载自blog.csdn.net/qq_42753878/article/details/97678238