Java 第6、7章 练习题

一、填空题

1.函数重载是指在函数名相同,但_________形参列表_________不同

2.创建大小为2行4列的二维char型数组的语句为______char [][] str = new char [2][4];_____,数组创建后每个元素的值为___’\u0000’ __。

3. 创建一个大小为10的整型数组,且数组元素的值分别为1,2,3,4,5,6,7,8,9,10的语句为_______ int [] myArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};___________________________。

4. 用final关键字修饰一个方法形参的含义是_____该形参在方法内不可修改_______。

5. 下列程序存在的错误是_____在嵌套的块中以相同的名称多次声明局部变量 ________。

public static void m(int i){
    for(int i = 0 ; i < 10; i++){
        System.out.println(i);
    }
}

二、单项选择题

1.下列语句的输出结果是____C____。

String[][] a = {
    {"Beijing","Wuhan"},
    {"Shanghai","Guangzhou","Xian"},
    {"Chongqing","Chengdu"}
};
System.out.println(a[a.length - 1].length);
System.out.println(a[a.length - 1][a[a.length - 1].length - 1].length());

A.2, 5   

B.3, 4   

C.2, 7       

D.3, 8

2.

String[]s = {"Monday", "Tuesday", "Wednesday", "Thirsday", "Friday", "Sataday", "Sunday"};

则下列语句正确的是____C_____。

A.int a = s.length,  b = s[1].length;

B.int  a = s.length( ), b = s[1].length;

C.int  a = s.length,  b = s[1].length();

D.int  a = s.length( ), b = s[1].length( );

3. 若有下面程序 

 class C { 
    public static void main(String[] args) {  
        increase(array);  
        System.out.print(array[0]); 
    } 
    public static void increase(int[] array) {  
        for(int i = 0; i < array.length; i++) {   
                array[i]++;  
        } 
    }
}

则输出为____B_____。

A.0                                           B.1                                  C.2                                          D.10

4. 下面的数组申明和初始化语句不合法的是____C_____。

A. int a[ ] = null;

B. int[ ] b = { };

C. int[ ] c = new int{1,2,3,4};

D. int [] d[] = new int[5][ ];

三、判断对错题

1. 局部变量在使用前必须通过初始化或者赋值语句显式地给一个值。()

2. 一个方法必须要有一个return语句。(×)

3. 如果定义int[] nValues={1,2,3,4}; 那么nValues为引用类型。()

4. 不能基于函数返回类型来重载函数。(

5. 二维数组的行数和列数是相同的。(×

四、阅读程序写输出结果

public class Test2 {
    public static void main(String[] args){
        int[] a = {1};
        String[] s = {"Hello"};
        int i = a[0];
        m(s,a,i);
        for(String v:s){
            System.out.println(v);
        }
        for(int v:a){
            System.out.println(v);
        }
        System.out.println(i);
    }

    public static void m(String[] a1, int[] a2, int i){
        for(int j =0; j < a1.length;j++){
            a1[j] = "Java";
        }
        for(int j =0; j < a2.length;j++){
            a2[j]++;
        }
        i++;
    }
}

输出:

Java

2

1

五、编程题

实现下面二个方法,并在Test3里添加入口main函数测试运行。

        Tips:注意检查输入参数row的值,当输入负数,0时如何处理也考虑进来,如何处理这种情况不做要求,可以简单地打印出提示信息,或者抛出异常。但最简单的办法就是当出现这些边界条件,直接返回null引用就行了。由这个方法的调用者去处理。另外也不考虑当row的值太大导致内存溢出的情况。

public class Test3 {
    /**
     *  创建一个不规则二维数组
     *  第一行row列
     *  第二行row - 1列
     *  ...
     *  最后一行1列
         *    数组元素值都为默认值
     * @param row 行数
     * @return 创建好的不规则数组
     */
    public static  int[][] createArray(int row){     
    }

    /**
     * 逐行打印出二维数组,数组元素之间以空格分开
     * @param a
     */
    public static  void printArray(int[][] a){

    }

}

源码:

import java.util.Scanner;

public class Test3 {
    public static  int[][] createArray(int row){
        if(row <= 0){
            return null;
        }
        int [][] myArray = new int [row][];
        for(int i = 0; i < row; i++){
            myArray[i] = new int [row - i];
        }
        return myArray;
    }
    public static void printArray(int[][] a){
        for(int i = 0; i < a.length; i++){
            for(int j = 0; j < a[i].length; j++){
                System.out.print(a[i][j] + " ");
            }
            System.out.print("\n");
        }
    }
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int row = scanner.nextInt();
        int [][] result = createArray(row);
        if(result == null) {
            System.out.println("row should be positive");
        }
        else {
            printArray(result);
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值