Java学习笔记(5)

本文详细介绍了Java中的方法定义、调用、参数传递、数组操作、内存管理以及基本数据类型和引用数据类型的存储特点。涵盖了数组复制、计算数字位数、数组相等判断、随机元素交换等内容。
摘要由CSDN通过智能技术生成

方法

定义

调用

带参数方法定义和调用

形参,实参

带返回值的方法

定义

调用

注意事项

return

方法的重载 注意要在同一个类里面

练习

    public static void printArr(int[] arr){
        System.out.print("[");
        for (int i : arr) {
            if (i == arr[arr.length - 1]){
                System.out.print(i);
            }else {
                System.out.print(i + ", ");
            }
        }
        System.out.println("]");
}

   public static int getMax(int[] arr){
        int maxNum = arr[0];
        for (int i : arr) {
            if (i > maxNum){
                maxNum = i;
            }
        }
        return maxNum;
    }

    public static boolean isExist(int a, int[] arr){
        for (int i : arr) {
            if (i == a ){
                return true;
            }
        }
        return false;
    }

return break关键字的区别

return:

其实跟循环没有什么关系,跟方法有关的,表示1结束方法2返回结果如果方法执行到了return,那么整个方法全部结束,里面的循环也会随之结束了

break关键字

其实跟方法没有什么关系,结束循环或者switch的。

package demo;

public class test2 {
    public static void main(String[] args) {
        int[] arr = {11, 22, 55, 322, 22};
        int[] arrCopy = copyOfRange(arr, 3, 5);
        for (int i : arrCopy) {
            System.out.print(i + " ");
        }
    }

    public static int[] copyOfRange(int[] arr, int from, int to) {
        int[] arrCopy = new int[to - from];
        for (int i = from, index = 0; i < to; i++, index++) {
            arrCopy[index] = arr[i];
        }
        return arrCopy;
    }
}

方法的内存

先进后出

基本数据类型 栈内存空间中变量存储的是真实的数据,存在自己的空间中

引用数据类型 只要有new就是引用数据类型,记录的是堆内存的地址,而不是真实值

练习

键盘录入一个正整数

定义一个方法,该方法的功能是计算该数字是几位数字,并将位数返回

在main方法中打印该数字是几位数

演示格式如下:

(1)演示一:

请输入一个整数:1234

控制台输出:1234是4位数字

(2)演示二:

请输入一个整数:34567

控制台输出:34567是5位数字

package demo;

import java.util.Scanner;

public class test3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int wei = returnWei(sc.nextInt());
        System.out.println(wei);
    }

    public static int returnWei(int a) {
        int wei = 1, flag = 10;
        while (true) {
            int shang = a / flag;
            if (shang != 0){
                wei++;
                flag *= 10;
            }else break;
        }
        return wei;
    }
}

需求:

​ 定义一个方法equals(int[] arr1,int[] arr2).

功能:

​ 比较两个数组是否相等(长度和内容均相等则认为两个数组是相同的)

package demo;

public class test4 {
    public static void main(String[] args) {
        int[] arr1 = {11, 22, 55, 322, 22};
        int[] arr2 = {11, 22, 55, 322, 22};
        System.out.println(equals(arr1, arr2));
    }

    public static boolean equals(int[] arr1, int[] arr2) {
        if (arr1.length != arr2.length) {
            return false;
        } else {
            for (int i = 0; i < arr1.length; i++) {
                if (arr1[i] != arr2[i]) {
                    return false;
                }
            }
            return true;
        }
    }
}

package exercise;

import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("月份:");
        int month = sc.nextInt();
        System.out.println("价格:");
        int price = sc.nextInt();
        System.out.println("头等舱0or经济舱1:");
        int lv = sc.nextInt();

        if (month >= 5 && month <= 10) {
            getPrice(price, lv, 0.9, 0.85);
        } else if ((month >= 11 && month <= 12) || (month >= 1 && month <= 4)) {
            getPrice(price, lv, 0.7, 0.65);
        } else {
            System.out.println("没有这个月份");
        }

    }

    private static void getPrice(int price, int lv, double discount1, double discount2) {
        if (lv == 0) {
            price = (int) (price * discount1);
            System.out.println(price);
        } else if (lv == 1) {
            price = (int) (price * discount2);
            System.out.println(price);
        }else {
            System.out.println("没有这个等级");
        }
    }

}

package exercise;

public class test2 {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 101; i <= 200; i++) {
            if(find(i)){
                count++;
                System.out.print(i + " ");
            }
        }
        System.out.println();
        System.out.println(count);

    }

    public static boolean find(int i) {
        for (int j = 2; j < i; j++) {
            if (i % j == 0) {
                return false;
            }
        }
        return true;
    }
}

package exercise;

import java.util.Random;

public class test3 {
    public static void main(String[] args) {
        char[] arr = new char[52];
        for (int i = 0; i < 52; i++) {
            if (i < 26) {
                arr[i] = (char) (97 + i);
            }else {
                arr[i] = (char) (65 + i - 26);
            }
        }

        Random r = new Random();
        String result = "";
        for (int i = 0; i < 4; i++) {
            int randomIndex = r.nextInt(arr.length);
            result += arr[randomIndex];
        }

        result += r.nextInt(10);
        System.out.println(result);
    }
}

package exercise;

import java.util.Scanner;

public class test4 {
    public static void main(String[] args) {
        int num = 6;
        double[] points = getPoints(num);
        double sum = getSum(points);
        double max = getMax(points);
        double min = getMin(points);
        double avg = getAvg(sum, max, min, num);
        System.out.println("平均分:" + avg);
    }

    public static double[] getPoints(int num) {
        Scanner sc = new Scanner(System.in);
        double[] pointArr = new double[num];
        for (int i = 0; i < num; ) {
            System.out.println("输入第" + (i + 1) + "个分数");
            double score = sc.nextDouble();
            if (score >= 0 && score <= 100) {
                pointArr[i] = score;
                i++;
            } else System.out.println("输错了,重新输");
        }
        return pointArr;
    }

    public static double getMax(double[] arr) {
        double maxNum = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > maxNum) {
                maxNum = arr[i];
            }
        }
        return maxNum;
    }

    public static double getMin(double[] arr) {
        double minNum = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < minNum) {
                minNum = arr[i];
            }
        }
        return minNum;
    }

    public static double getSum(double[] arr) {
        double sumResult = 0;
        for (double v : arr) {
            sumResult += v;
        }
        return sumResult;
    }

    public static double getAvg(double sum, double max, double min, int num) {
        return (sum - max - min) / num;
    }
}

package exercise;

import java.util.Scanner;

public class test5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入原密码:");
        int password = sc.nextInt();
        int[] passwordArr = getArr(password);
        int newPassword = getJiami(passwordArr);
        System.out.println(newPassword);
    }

    public static int[] getArr(int password) {
        int temp = password;
        int count = 0;
        while (temp != 0) {
            temp = temp / 10;
            count++;
        }

        int[] passwordArr = new int[count];

        for (int i = passwordArr.length - 1; i >= 0; i--) {
            passwordArr[i] = password % 10;
            password /= 10;
        }

        return passwordArr;
    }

    public static int getJiami(int[] passwordArr) {
        for (int i = 0; i < passwordArr.length; i++) {
            passwordArr[i] += 5;
            passwordArr[i] %= 10;
        }
        for (int i = 0, j = passwordArr.length - 1; i < j; i++, j--) {
            int temp = passwordArr[i];
            passwordArr[i] = passwordArr[j];
            passwordArr[j] = temp;
        }
        int result = 0;
        for (int j : passwordArr) {
            result = result * 10 + j;
        }
        return result;
    }
}

package demo;

import java.util.Scanner;

public class test6 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入原密码:");
        int password = sc.nextInt();
        int[] passwordArr = getArr(password);
        int newPassword = getJiemi(passwordArr);
        System.out.println(newPassword);
    }

    public static int[] getArr(int password) {
        int temp = password;
        int count = 0;
        while (temp != 0) {
            temp = temp / 10;
            count++;
        }

        int[] passwordArr = new int[count];

        for (int i = passwordArr.length - 1; i >= 0; i--) {
            passwordArr[i] = password % 10;
            password /= 10;
        }

        return passwordArr;
    }

    public static int getJiemi(int[] password) {
        for (int i = 0, j = password.length - 1; i < j; i++, j--) {
            int temp = password[i];
            password[i] = password[j];
            password[j] = temp;
        }
        for (int i = 0; i < password.length; i++) {
            if (password[i] >= 0 && password[i] <= 4) {
                password[i] += 10;
            }
            password[i] -= 5;
        }
        int result = 0;
        for (int j : password) {
            result = result * 10 + j;
        }
        return result;
    }

}

package demo;

import java.util.Random;

public class test7 {
    public static void main(String[] args) {
        int[] arr = {2, 588, 888, 1000, 10000};
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {//获取随机索引
            int randomIndex = r.nextInt(arr.length);//拿着i跟随机索引randomIndex上的值进行交换
            int temp = arr[i];
            arr[i] = arr[randomIndex];
            arr[randomIndex] = temp;
        }
            //2.遍历奖池,从0索引开始获取每一个奖项
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值