作业,写一个计算器

    数组
    image.png
    注意定义、创建以及赋值的步骤
    定义和创建也可以合成一行: int[] nums = new int[10];

    申明数组时,会进栈;创建的时候,数组会存进堆

    数组初始化
    image.png
    稀里糊涂的,没搞懂为什么初始化以及为什么叫动态为什么叫静态

    数组使用

    1. package code_learn_day8;
    2. public class Arry03 {
    3. public static void main(String[] args) {
    4. int[] arrays = new int[10];
    5. for (int i = 0; i < 10; i++) {
    6. arrays[i] = i;
    7. }
    8. for (int array : arrays){ // 增强型for循环
    9. System.out.println(array);
    10. }
    11. int[] result = reverse(arrays); // 这里同样需要申明输出数组
    12. for (int i = 0; i < result.length; i++) {
    13. System.out.println(result[i]);
    14. } // 这里直接用for (int i : result) 会输出乱码,原因未知
    15. }
    16. // 反转数组
    17. public static int[] reverse(int[] arrays) {
    18. // 这里表示输入的是数组
    19. int[] result = new int[arrays.length];
    20. // 反转
    21. for (int i = 0, j = result.length - 1; i < arrays.length; i++, j—) {
    22. result[j] = arrays[i];
    23. }
    24. return result;
    25. }
    26. }

    这是一个逆转数组并输出的程序,里面用到了数组、方法、数组调用以及方法调用,请注意注释

    多维数组,相当于矩阵,提取按行和列的规则即可
    多为数组用length指的是里面中括号的数量,二维数组就是行数
    多维数组生成以及调用:
    image.png

    调用Arrays类中的sort和toString方法
    image.png

    冒泡排序
    java跑完循环以后会清空大括号内新产生的变量,所以如果需要输出循环内新产生的变量,必须在循环前先定义好!

    1. import java.util.Arrays;
    2. public class Array07 {
    3. public static void main(String[] args) {
    4. int[] a = {679567, 4567, 456, 3, 2, 41, 24, 5, 23, 234, 45, 7, 4, 2345, 2, 34, 23, 4, 234, 23};
    5. int temp = 0;
    6. int i = 0;
    7. for (i = 0; i < a.length - 1; i++) {
    8. boolean flag = false; // 通过flag来减少没有意义的比较
    9. for (int i1 = 0; i1 < a.length - i - 1; i1++) {
    10. if (a[i1] > a[i1 + 1]) {
    11. temp = a[i1 + 1];
    12. a[i1 + 1] = a[i1];
    13. a[i1] = temp;
    14. flag = true;
    15. }
    16. }
    17. if (flag == false) {
    18. break;
    19. }
    20. }
    21. System.out.println(Arrays.toString(a));
    22. System.out.println(“循环了 “ + i + “次”);
    23. // 冒泡排序
    24. // 比较相邻数的大小,如果大小不对,则交换顺序,知道检测不到错的顺序
    25. }
    26. }

    稀疏数组:
    image.png

    稀疏数组的生成与还原:

    1. package code_learn_day8;
    2. import java.util.Arrays;
    3. public class SparseArray01 {
    4. public static void main(String[] args) {
    5. // 创建一个二维数组 11*11 0无棋子 1有棋子
    6. int[][] array1 = new int[11][11];
    7. array1[1][2] = 1;
    8. array1[2][3] = 2;
    9. System.out.println(“输出原始数组”);
    10. // 学习这里遍历整个数组的方法
    11. for (int[] ints : array1) { // 相当于把array1里的数组赋值给新数组ints
    12. for (int anInt : ints) { // 再把ints里的数赋值给anInt
    13. System.out.print(anInt + “\t”);
    14. }
    15. System.out.println();
    16. }
    17. System.out.println(“==================================”);
    18. // 转换为稀疏数组保存
    19. // 获取有效值的个数
    20. int sum = 0;
    21. for (int i = 0; i < 11; i++) {
    22. for (int i1 = 0; i1 < 11; i1++) {
    23. if (array1[i][i1] != 0){
    24. sum++;
    25. }
    26. }
    27. }
    28. System.out.println(“有效值的个数:” + sum);
    29. int[][] array2 = new int[sum + 1][3];
    30. array2[0][0] = 11;
    31. array2[0][1] = 11;
    32. array2[0][2] = sum;
    33. int count = 0;
    34. for (int i = 0; i < array1.length; i++) {
    35. for (int j = 0; j < array1.length; j++) {
    36. if (array1[i][j] != 0){
    37. count++;
    38. array2[count][0] = i;
    39. array2[count][1] = j;
    40. array2[count][2] = array1[i][j];
    41. }
    42. }
    43. }
    44. // 输出系数数组
    45. System.out.println(“稀疏数组”);
    46. for (int[] ints : array2) {
    47. for (int anInt : ints) {
    48. System.out.print(anInt + “\t”);
    49. }
    50. System.out.println();
    51. }
    52. System.out.println(“=====================================”);
    53. // 读取稀疏数组
    54. int[][] array3 = new int[array2[0][0]][array2[0][1]];
    55. for (int i = 1; i < array2.length; i++) {
    56. array3[array2[i][0]][array2[i][1]] = array2[i][2];
    57. }
    58. System.out.println(“还原”);
    59. for (int[] ints : array3) {
    60. for (int anInt : ints) {
    61. System.out.print(anInt + “\t”);
    62. }
    63. System.out.println();
    64. }
    65. }
    66. }

    注意java 从0开始的特点

    面向对象编程OOP
    以类的方式组织代码,以对象的组织封装数据
    特点: 封装、继承、多态

    ended at No.59
    to be continued…