2017-03-14-二维数组-this-static
Xplorist Lv6

2017-03-14-二维数组-this-static

实例1:

将二维数组中的数组长度不等的一维数组,输出并记录长度。

核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void test(){
        int[][] array={{1,2},{1,2,3},{1,2,3,4},{1}};
        
        System.out.println("二维数组的行数:"+array.length);
        
        for(int i=0;i<array.length;i++){
            System.out.println("第"+(i+1)+"行:");
            
            for(int j=0;j<array[i].length;j++){
                System.out.print("a["+i+"]["+j+"]="+array[i][j]+" ");
            }
            System.out.println();
            System.out.println("第"+(i+1)+"行:有"+array[i].length+"个");
        }
    }

实例2:

/**
     * 假设有8个学生和10道题目,学生的答案储存在一个二维数组中。每一行记录所有学生题目的答案,
     * 正确答案储存在一个一维数组中,给测验打分并且显示出结果。将每个学生的答案与正确答案进行比较,
     * 统计每个学生正确答案的数量。并且打印显示出来。
     * */

核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public void test1(){
        char[][] answer_Stu={{'A','B','A','C','C','D','E','E','A','D'},
                {'D','B','A','B','C','A','E','E','A','D'},
                {'E','D','D','A','C','B','E','E','A','D'},
                {'C','B','A','E','D','C','E','E','A','D'},
                {'A','B','D','C','C','D','E','E','A','D'},
                {'B','B','E','C','C','D','E','E','A','D'},
                {'B','B','A','C','C','D','E','E','A','D'},
                {'E','B','E','C','C','D','E','E','A','D'}};
        char[] answer={'D','B','D','C','C','D','A','E','A','D'};
        
        for(int i=0;i<answer_Stu.length;i++){
            int count=0;
            for(int j=0;j<answer_Stu[i].length;j++){
                if(answer_Stu[i][j]==answer[j]){
                    count++;
                }
            }
            System.out.println("第"+(i+1)+"名同学答对了"+count+"个");
        }
        
    }

实例3:

/**
     * 定义一个10-10的二维数组,实现类似扫雷游戏里随机分布10个雷的界面
     */

核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    public void test2() {
        char[][] canvas = new char[10][10];
        for (int i = 0; i < canvas.length; i++) {
            for (int j = 0; j < canvas[i].length; j++) {
                canvas[i][j] = '+';
            }
        }
        int[] a = new int[10];
        int[] b = new int[10];
        int[] c = new int[10];
        
        for (int i = 0; i < 10; i++) {
            do{
            a[i] = (int) (Math.random() * 10);
            b[i] = (int) (Math.random() * 10);
            }while(canvas[a[i]][b[i]]=='●');//核心算法位置
            canvas[a[i]][b[i]] = '●';
        }
     
        for (int i = 0; i < canvas.length; i++) {
            for (int j = 0; j < canvas[i].length; j++) {
                System.out.print(canvas[i][j] + " ");
            }
            System.out.println();
        }

    }

实例4:

在控制台中输出打印五子棋棋盘

思路:

1.将棋盘和边界一起存进二维数组

2.将棋盘和边界分开,只是在输出打印的时候组合显示

思路1的核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class Gobang {

    public static void main(String[] args) {
        show();
    }

    public static void show() {
        String[][] a = new String[16][16];
        for (int i = 0; i < 16; i++) {
            for (int j = 0; j < 16; j++) {
                if (i == 0) {
                    if (j < 10) {
                        a[i][j] = "0" + String.valueOf(j);
                    } else {
                        a[i][j] = String.valueOf(j);
                    }
                } else if (j == 0) {
                    if (i < 10) {
                        a[i][j] = "0" + String.valueOf(i);
                    } else {
                        a[i][j] = String.valueOf(i);
                    }
                } else {
                    a[i][j] = " +";
                }
            }
        }    
        

        for (int i = 0; i < 16; i++) {
            for (int j = 0; j < 16; j++) {
                    System.out.print(a[i][j] + " ");
            }
            System.out.println();
        }

    }

}

思路2的核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class FiveInARow {

    public static void main(String[] args) {
        show();
    }

    public static void show() {
        char[][] c = new char[15][15];
        int[] a = new int[15];

        for (int i = 0; i < c.length; i++) {
            a[i] = i;
            for (int j = 0; j < c[i].length; j++) {
                c[i][j] = '+';
            }
        }

        System.out.print("   ");
        for (int i = 0; i < 15; i++) {
            if(i<10){
                System.out.print("0" + a[i] + " ");
            }else{
                System.out.print("" + a[i] + " ");
            }
            
        }
        System.out.println();

        for (int i = 0; i < 15; i++) {
            for (int j = 0; j < 16; j++) {
                if (j== 0) {
                    if(i<10){
                        System.out.print("0"+a[i]+" ");
                    }else{
                        System.out.print(a[i]+" ");
                    }
                } else {
                    System.out.print(" "+c[i][j-1]+" ");
                }
            }
            System.out.println();
        }

    }
}

实例5:

求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时公共有5个数相加),几个数相加有键盘控制。

实例6:

求1+2!+3!+….+8!的和

实例7:

/*
     * 判断生成的随机坐标不重复
     * 随机不重复问题:不重复,随机
     * 思路:检测
     * 
     * */

 评论