2022 01 06总结

1、Javadoc生成文档

package com.yan.Mypack3;

/**
* @author YHR0608 //作者
* @date 2022/1/6 - 9:09 //时间
* @version 1.0 //版本
* @since 1.8 //开发版本
*/
public class Doc {

       String name ;

   /**
    * @author YHR0608
    * @param name //参数名
    * @return //返回值
    * @throws Exception
    */
   public String test(String name) throws Exception{
           return name;

  }
}

2、Scanner类

1)首先要创建scanner对象

Scanner scanner = new Scanner(System.in);

注意:要记得关闭

scanner.close();

2)判断是否有输入

if (scan.hasNextLine())

3)获取输入

String str = scan.nextLine();
//这里定义了String类型变量str 来接收输入
//还要其他的方法,例如:nextInt()、nextFloat()、nextDouble()

3、方法

1)自定义方法

//自定义方法与main()方法平级,要注意static,否则无法在main方法中引用
public static int add(int a,int b){ //int是返回类型
       return (a + b);
  }
}

2)可变长参数、不定项参数

public static double printMax(double...number){
  //判断参数个数
  if (number.length == 0){
      System.out.println("你压根没输入任何东西!");
      return 0;
  }
  //第一个参数赋值为result
  double resule = number[0];
  //for循环找max
  for (int i = 1;i<number.length;i++){
      if (resule < number[i]){
          resule = number[i];
      }
  }
  return resule;
}
//注意:不定项参数一定是最后一个参数,实际上是一个数组,由此可见---> number[i]

3)递归思想

package com.yan.Method;

/**
* @author YHR0608
* @date 2022/1/6 - 17:04
*/

//求阶乘
public class Demo05 {
  //递归思想
  public static void main(String[] args) {
      System.out.println(f(5));
  }

  public static int f(int n){
      if (n == 1){
          return 1;
      }else {
          return n*f(n-1);
      }

  }
}

4、数组

1)数组定义与初始化

方法一:
int[] nums; //声明数组
nums = new int[10]; //创建数组

方法二:
int[] nums = new int[10];//初始化

2)foreach遍历数组

//使用foreach输出
//将每个元素赋值给x,再输出
for (int x:arr1){
  System.out.println(x);
}
---------------------
//与传统对比
//实现数组的输出
for (int i = 0; i < arr1.length; i++) {            
System.out.println(arr1[i]);
}

3)数组当参数

//输出数组---数组当参数
public static void Print_arr(int[] arrays){
  for (int i = 0; i < arrays.length; i++) {
      System.out.print(arrays[i]+" ");
  }

}

4)数组当返回值

//数组的倒转
public static int[] Reverse(int[] arrays){
  //新建一个数组来接受倒置之后的数组
  int[] result = new int[arrays.length];
  //使用一个for循环来实现倒转
  for (int i = 0; i <arrays.length ; i++) {
      result[arrays.length-i-1] = arrays[i];
  }
  return result;
}

5)二维数组

//方法一:
int[][] arr = {{1,2},{2,3},{3,4},{4,5}};
//方法二;
int[][] arr = new int[4][2];

6)Arrays 类

import java.util.Arrays;
会自动导包
//Arrays类
  public static void main(String[] args) {
      //tostring:输出数组
      //新建一个数组
      int[] arr = {1,4,6,3,67,3,234,67,5};

      System.out.println(Arrays.toString(arr));
      运行结果:[1, 4, 6, 3, 67, 3, 234, 67, 5]

      //sort 排序
      Arrays.sort(arr);
      System.out.println(Arrays.toString(arr));
运行结果:[1, 3, 3, 4, 5, 6, 67, 67, 234]
  }

7)稀疏数组

package com.yan.Array;

/**
* @author YHR0608
* @date 2022/1/6 - 22:28
*/
public class Demo07 {
  //稀疏数组的实现
  public static void main(String[] args) {
      //先建立一个二维数组 11*11
      int[][] arr = new int[11][11];
      //赋值
      arr[1][2] = 1;
      arr[2][3] = 2;
      //输出数组看看
      System.out.println("输出数组:");
      //遍历输出
      /*
      for (int i = 0; i < 11; i++) {
          for (int j = 0; j < 11; j++) {
              System.out.print(arr[i][j]+"\t");
          }
          System.out.println();
      }
      */
      //用foreach输出
      for (int[] ints : arr) {
          for (int anInt : ints) {
              System.out.print(anInt+"\t");
          }
          System.out.println();
      }

      System.out.println("================================================");
      //开始转化为稀疏数组
      /*
      格式如下:   行数         列数       元素值
                  数组列数     数组行数     有效元素个数  
      例如:     11 11 2
                  1   2   1
                  2   3   2                
        */
      //遍历二维数组arr 获取有效值个数 sum
      int sum = 0;
      for (int i = 0; i < 11; i++) {
          for (int j = 0; j < 11; j++) {
              if (arr[i][j]!=0){
                  sum++;
              }
          }
      }

      //新建一个二维数组
      int[][] arr2 = new int[sum+1][3];

      arr2[0][0] = 11;
      arr2[0][1] = 11;
      arr2[0][2] = sum;


      //遍历数组,给稀疏数组赋值
      int count = 0;
      for (int i = 0; i < arr.length; i++) {
          for (int j = 0; j < arr[i].length; j++) {
              if (arr[i][j]!=0){
                  count++;
                  arr2[count][0] = i;
                  arr2[count][1] = j;
                  arr2[count][2] = arr[i][j];
              }
          }
      }
      //输出稀疏数组
      for (int[] ints : arr2) {
          for (int anInt : ints) {
              System.out.print(anInt+"\t");
          }
          System.out.println();
      }
      System.out.println("================================================");

      //将稀疏数组还原为二维数组
      //新建二维数组
      int[][] arr3 = new int[arr2[0][0]][arr2[0][1]];
      //把有效数字还原到二维数组中
      arr3[arr2[1][0]][arr2[1][1]] = arr2[1][2];
      arr3[arr2[2][0]][arr2[2][1]] = arr2[2][2];
      for (int[] ints : arr3) {
          for (int anInt : ints) {
              System.out.print(anInt+"\t");
          }
          System.out.println();
      }

  }

}