初识Java(终章)(二维数组)(自己学习整理的资料)

目录

一.复习

二.二维数组

二维数组案例

三.关于基本类型以及引用的类型

四.笔记

五.Java基础总结


一.复习

  • (一)将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置。

import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        int[] nums =new int[101];
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        for (int i = 1; i <= n;i++){
            nums[i] = input.nextInt();
        }
        //将第一个元素保存到一个临时变量中
        int temp = nums[1];
        for (int i = 1;i <= n ;i++){
            nums[i] = nums[i+1];
        }
        //重新给nums[n]赋值
        nums[n] = temp;
        //打印结果
        for (int i = 1;i <= n;i++){
            System.out.println(nums[i]+"\t");
        }
     }
}
  • (二)输出一个整数数组中最大的数和最小的数的差值。
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        int[] nums = new int[100];
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        for (int i = 1; i <= n; i++) {
            nums[i] = input.nextInt();
        }
        //设置默认一个最大值和最小值
        //数组第一个元素
        int max = nums[1];
        int min = nums[1];
        for (int i = 1; i <= n; i++) {
            if (nums[i] > max) {
                max = nums[i];
            }
            if (nums[i] < min) {
                min = nums[i];
            }
        }
        int result = max - min;
        System.out.println(result);
    }
}

二.二维数组

  • 定义

一维数组的元素可以是任何基本数据类型,二维数组的每一个元素则是一维数组。

又称为矩阵。

  • 语法

int[][]score = new int[4][5];

score[0][0] = 10;

score[2][3] = 20;

ps:new int 第一个括号中代表行(row),第二个括号中代表列(column)。

  • 二维数组内存表示

二维数组案例
  •  输入一个正整数n,输出n×n的回型方阵。
  • 思路

ps:图是截取自视频老师讲解 。

import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        int[][] nums = new int[10][10];
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        for (int i = 1;i <= (n+1) / 2;i++){
            for (int j = 1;j <= (n+1) / 2;j++){
                nums[i][j] = Math.min(i, j);//左上角
                nums[i][n+1-j]=Math.min(i, j);//右上角
                nums[n+1-i][j] = Math.min(i, j);//左下角
                nums[n+1-i][n+1-j] = Math.min(i, j);//右下角
            }
        }
        for (int i = 1;i <= n;i++){
            for (int j = 1;j <= n;j++){
                System.out.print(nums[i][j] + "\t");
            }
            System.out.println();
        }
    }
}

练习

  • (一)读入一个正整数n,输出一个n行的数字三角形 
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        int[][] nums = new int[10][10];
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        //定义一个变量
        int num = 1;
        //赋值操作
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                nums[i][j] = num;
                num++;
            }
        }
        //使用一个二重循环,打印二维数组的每一个元素
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(nums[i][j] + "\t");
            }
            System.out.println();
        }
    }
}
  • (二)已知一个n×n(2<=n<=20)的矩形(方阵),把矩阵二条对角线上的元素值加上10,然后输出这个新矩阵。
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        int[][] nums = new int[21][21];
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        for (int i = 1; i <= n; i++) {//行数
            for (int j = 1; j <= n; j++) {
                nums[i][j] = input.nextInt();//原来的值
                if (i == j ||i + j == n + 1){
                    //现在i和j定位到的数字是对角线上的数字
                    nums[i][j] += 10;
                }
            }
        }
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(nums[i][j] + "\t");
            }
            System.out.println();
        }
    }
}
  • (三)给定一个5×5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果。
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        //交换二维矩阵的两行
        int[][] nums = new int[6][6];
        Scanner input = new Scanner(System.in);
        //给二维数组动态赋值
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= 5; j++) {
                nums[i][j] = input.nextInt();
                }
            }
        //n和m的值
        int n = input.nextInt();
        int m = input.nextInt();
        for (int i = 1; i <= 5; i++) {//列数
            int temp = nums[n][i];
            nums[n][i] = nums[m][i];
            nums[m][i] = temp;
        }
        //换位后的新内容
            for (int i = 1; i <=5 ; i++) {
                for (int j = 1; j <= 5; j++) {
                System.out.print(nums[i][j] + "\t");
            }
            System.out.println();
        }
    }
}
  •  (四)输入两个n行m列的矩阵A和B,输出它们的和A+B。
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        int[][] nums = new int[101][101];//第一个矩阵
        int[][] numstwo = new int[101][101];//第二个矩阵
        int[][] numsresult = new int[101][101];//最后矩阵
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int m = input.nextInt();
        //将会输入两个矩阵,都是n行m列
        //给第一个矩阵赋值
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                nums[i][j] = input.nextInt();
                }
            }
        //给第二个矩阵赋值
        for (int i = 1; i <= n; i++) {
          for (int j = 1;j <= m;j++){
              numstwo[i][j] = input.nextInt();
          }
        }
        //
            for (int i = 1; i <=n ; i++) {
                for (int j = 1; j <= m; j++) {
                    numsresult[i][j] = nums[i][j] + numstwo[i][j];
                }
            }
        for (int i = 1; i <=n ; i++) {
            for (int j = 1; j <= m; j++) {
                System.out.print(numsresult[i][j] +"\t" );
            }
            System.out.println();
        }
    }
}
  • (五)输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。
  • 思路

ps:图从老师视频上截取的。

import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        int[][] nums = new int[101][101];
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int m = input.nextInt();
        //给n行m列的矩阵赋值
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                nums[i][j] = input.nextInt();
                }
            }
        //旋转后的矩阵,相当于n和m互换,原来的n需要最大值向下回退
        for (int i = 1; i <= m; i++) {
          for (int j = n;j >= 1;j--){
              System.out.print(nums[j][i] + "\t");
          }
            System.out.println();
        }
    }
}

 ps:着实有些难度,真要弄懂的话建议找视频学习。

三.关于基本类型以及引用的类型

  • 四类八种:基本类型

 整型:int  short

双精度浮点型:double    float

布尔类型:boolean

字符型:char

  • 引用类型:String 。数组

ps:基础类型只是在栈上占用空间,引用类型就是栈和堆都要占用空间。

四.笔记

  • 回型方阵,我们可以将大的方阵打散成小的方阵,先观察小方阵如何解决,然后根据对称性解决其他小方阵。

五.Java基础总结

  • 学习到这,Java基础已经讲完,接下来就会进入到Java面向对象的学习。

1.Java基础

  • 面向对象之前

初识Java中

包含了  Java基础知识,Java开发环境和开发的步骤。用记事本开发第一个Java程序。后面使用了idea工具开发。

  • 面向对象之后

初识Java(二)中     

包含了变量(变量中的类型),常量以及运算符和表达式   

初识Java(三)中

包含了分支语句总共5种 :if相关的四种类型(简单if、if - else、多重if、嵌套if)  以及switch选择结构。

初识Java(四)中

包含了循环结构:单层循环结构中的三大循环(for、while、do - while())break和continue关键字的区别。

初识Java(五)中

包含了二重循环:二重循环打印图形的思路:外层控制行数,内层控制图形符号数。每一行符号可能出现多种类型。内层循环不止一个,注意观察找出内层循环与外层循环的关系。

初识Java(六)中

包含了一维数组:数组可以批量保存类型相同的数据。下标从0开始,下标越界。下标最大值只能到nums.length-1。

数组会和循环结合,循环又会和分支结构结合。(综合运用)

初识Java(终章)中

包含了二维数组:多行多列的一种结构,处理的是数据矩形的数据以及迷宫和九宫格性质的问题。数组中的每一项又是一个一维数组。

Java程序的三大结构:顺序结构【++、--数据类型】,分支结构,循环结构。

  • 面向对象后

后面的学习目标           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值