方法与数组

方法与数组

调用方法

 //调用方法
        boolean bool=isRunNian(2022);

打印三角

public static void printTriangle(int line){
        //外循环
        for (int i = 0; i < line; i++) {
            //内循环
            for (int j = 0; j <line; j++) {
                System.out.print(" ");
            }
            //打印内循环
            for (int j = 0; j < i*2-1; j++) {
                System.out.print("*");
            }
            System.out.println("");
        }
    }

控制台输入

 Scanner input=new Scanner(System.in);
 int num= input.nextInt();

数组写法

//第一种
      int[] nums = new int[5];
        for (int i = 0; i < nums.length; i++) {
            nums[i]=i+1;
        }
        //第二种
        int[] nums2;
        nums2 = new int[5];
        //第三种
        int[] nums3 = new int[]{1,2,3,4,5};
        //第四种
        int[] nums4 ={1,2,3,4,5};

数组遍历打印

//for遍历
        int len = scores.length;
        for (int i = 0; i < len; i++) {
            int score =scores[i];
            System.out.println(score);
        }
//forearch遍历
        for(int x:scores){
            System.out.println(x);
        }

可变参数

 public static void print1(int... x){
        int len=x.length;
        for (int i = 0; i < len; i++) {
            System.out.println(x[i]);
        }
    }
1.可变参数只能是参数列表中的最后一个
2.可变参数作为数组使用

空指针

NullPointerException

数组下标越界

ArrayIndexOutOfBoundsException

随机数

Random r = new Random();

猜数

bool类型,if else判断

 int[] nums = new int[5];
        int len = nums.length;
        Random r = new Random();
        for (int i = 0; i <len; i++) {
            nums[i]=r.nextInt(50);
        }
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你要猜的数(50以内)");
        int usernumber = input.nextInt();

        boolean flag = false;
        for(int x:nums){
            if(usernumber==x){
                flag=true;
                break;
            }
        }
        if (flag){
            System.out.println("猜对");
        }else {
            System.out.println("猜错");
        }
    }
}

打印金字塔

char[] cs = {'A','B','C','D','E','F','G'};

        //外循环
        int len = cs.length;
        for (int i = 1; i <=len; i++) {
            //内循环
            for (int j = i; j < len; j++) {
                System.out.print(" ");
            }
            for (int j = 1; j <=i*2-1 ; j++) {
                System.out.print(cs[i-1]);
            }
            System.out.println();
        }
    }

二维数组

int[][] scores= {{11,11,11},{12,12,12},{13,13,13}};

最大最小值算法

定义数组,输出

 public static void main(String[] args) {

        int[] num = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        int max = max(num);
        System.out.println("数列最大值"+max);
        int min = min(num);
        System.out.println("数列最小值"+min);
    }

1.求最大值

两两比较,进行交换

//求最大值
public static int max(int[] num) {
        int max = num[0];
        int len = num.length;
        for (int i = 0; i < len; i++) {
            if (num[i] > max) {
                num[i] = num[i] + max;
                max = num[i] - max;
                num[i] = num[i] - max;
            }
        }
        return max;
    }

2.求最小值

同理得

//求最小值
    public static int min(int[] num) {
        int min = num[0];
        int len = num.length;
        for (int i = 0; i < len; i++) {
            if (num[i] < min) {
                num[i] = num[i] + min;
                min = num[i] - min;
                num[i] = num[i] - min;
            }

        }
        return min;
    }

冒泡排序

外循环控制元素数量,内循环控制元素下标比较

 //外循环控制轮数
        for (int i = 0; i < nums.length-1; i++) {
            //内循环
            for (int j = 0; j < nums.length-1-i; j++) {
                if (nums[j]>nums[j+1]){
                    nums[j]=nums[j]+nums[j+1];
                    nums[j+1]=nums[j]-nums[j+1];
                    nums[j]=nums[j]-nums[j+1];
                }
            }
        }

选择排序

//记录每次比较的最小值下标
        int minIndex=0;
        for (int i = 0; i <nums.length-1 ; i++) {
            //每轮最小值下标
            minIndex=i;
            for (int j = i+1; j < nums.length; j++) {
                if (nums[minIndex]>nums[j]){
                    minIndex=j;
                }
            }
            //判断需要交换的数下标是否是自己
            if (minIndex!=i){
                nums[minIndex]=nums[minIndex]+nums[i];
                nums[i]=nums[minIndex]-nums[i];
                nums[minIndex]=nums[minIndex]-nums[i];
            }
        }

直接插入排序算法

for (int i = 1; i < nums.length; i++) {
            int temp=nums[i];//记录操作数
            int j=0;
            for (j = i-1; j >=0 ; j--) {
                if (nums[j]>temp){
                    nums[j+1]=nums[j];
                }else {
                    break;
                }
            }
            if (nums[j+1]!=temp){
                nums[j+1]=temp;
            }
        }

二分查找

public static int binarySearch(int[]nums ,int key){
        int start = 0;//开始下标
        int end =nums.length-1;//结束下标
        while (start<=end){
            int middle=(start+end)/2;//>>>1
            if (nums[middle]>key){
                end=middle-1;
            }else if (nums[middle]<key){
                start=middle+1;
            }else {
                return middle;
            }
        }
        return -1;
    }
}

Arrays

二分查找

binarySearch
 //二分查找
        int index=Arrays.binarySearch(nums,44);
        System.out.println("找到的下标:"+index);

输出数组

toString
    //输出数组
        System.out.println(Arrays.toString(nums));

排序数组,快速排序

sort
        //排序数组
        int[] nums2={15,441,64,6,18,4,1,3,4815,4815,6};
        Arrays.sort(nums2);//快速排序
        System.out.println(Arrays.toString(nums2));

数组复制

copyOf
        //数组复制
        int[] nums3=Arrays.copyOf(nums2,12);
        System.out.println(Arrays.toString(nums3));

效率最高数组复制

arraycopy
  //效率最高的数组复制
        int[] nums4=new int[nums2.length];
        System.arraycopy(nums2,0,nums4,0,nums2.length);
        System.out.println(Arrays.toString(nums4));

判断两数组值是否相等

equals
        //判断两个数组的值是否相等
        System.out.println(Arrays.equals(nums,nums2));

填充数组

fill
  //填充数组
        int[] nums5=new int[nums4.length];
        Arrays.fill(nums5,0);
        System.out.println(Arrays.toString(nums5));

构造方法

public class Test18 {
    public static void main(String[] args) {
        Dog dog = new Dog();//实例化

    }
}
class Dog {
    public Dog(){
        System.out.println("构造方法");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值