杂七杂八的笔记

循环语句

/**
     * 转义字符
     * 使用char类型保存 \n回车(空一行)  \t-tab \r换行  \\
     * */
    char lineFeed = '\n';
    char tab = '\t';
    char enter = '\r';
    char slash = '\\';

    /**
     * 经典的打印金字塔
     * 接受一个整数表示层数
     * @param totalLevel 层数
     * */
    public void normalPyramid(int totalLevel){
        for (int a=1;a<=totalLevel;a++){
            for(int b=1;b<=a;b++){
                System.out.print("*");
            }
            System.out.println('\r');
        }
    }

    /**
     * 改进金字塔
     * */
    public void advancePyramid(int totalLevel){
        for (int a = 0;a<totalLevel;a++){
            for (int c=totalLevel-a;c>0;c--){
                System.out.print(" ");
            }
            for (int b=1;b<=a*2+1;b++){
                System.out.print("*");
            }
            System.out.println('\r');
        }
    }

    /**
     *空心金字塔 使用while实现
     * */
    public void hollowPyramid(int totalLevel){
        //控制输出行数
        for(int a=1;a<totalLevel;a++){
            //输出空格--第一个*前空格
            for(int b=totalLevel-a;b>0;b--){
                System.out.print(" ");
            }
            //第一个*--最后一个*--中间的空格
            for(int c=1;c<=a*2;c++){
                while (c==1&&a>1){
                    System.out.print("*");
                    break;
                }
                while (c==a*2){
                    System.out.print("*");
                    System.out.println('\r');
                    break;
                }
                while(c>1&&c<a*2-1){
                    System.out.print(" ");
                    break;
                }
            }
            while(a==totalLevel-1){
                for(int d=1;d<=(totalLevel-1)*2+1;d++){
                    System.out.print("*");
                }
                break;
            }
        }
    }

初始化块

public  class PublicClass {
    // 非静态初始化块 先赋值9再赋值6
    {
        a=9;
        System.out.println("这里执行了a");
    }
    int a = 6;

    public static void main(String[] args) {
            System.out.println(new PublicClass().a);
    }
}

数组

public class ArrayDrill {
    //foreach
    private int[] arr = {1,1,1,1,1,};
    private int[] arr1 = new int[8];
    public int[] getArr(){
        return arr;
    }
    public String getArrString(int[] arr){
        String sum = "";
        for (int i:arr) {
            System.out.print("{"+ i +"}");
        }
        return sum;
    }

    /**
     * 创建一个char类型的26个元素的数组,分别放置A-Z。使用for循环访问所有元素并打印出来。
     * */
    public void printCharArray(){
        char[] wordArray = new char[26];
        for (int i = 0;i<wordArray.length;i++){
            wordArray[i] = (char)('A'+i);
        }
        for(char word:wordArray){
            System.out.print(word);
        }
    }

    /**
     * 请求出一个数组int[]的最大值{4,-1,9,10,23},并得到对应的下标。
     * */

    /**
     * 请求出一个数组的和和平均值。
     * */

    /**
     * 数组扩容
     * 创建新数组
     * 循环赋值拷贝,插入最后一个元素值
     * */

    /**
     * 二维数组 int[][] arr = {{4,6},{1,4,5,7},{-2}}  遍历二维数组并得到和
     * */
    public void twoDimensionalArray(){
        int[][] arr = {{4,6},{1,4,5,7},{-2}};
        int sum=0;
        for(int[] item:arr){
            for(int inItem:item){
                sum = sum+inItem;
            }
        }
        System.out.println("二维数组求和"+ sum);
    }

    /**
     * 使用二维数组打印杨辉三角
     * 1
     * 1 1
     * 1 2 1
     * 1 3 3 1
     * 1 4 6 4 1
     * 1 5 10 10 5 1
     * */
    public void printPascalsTriangle(int level){
        int[][] arr = new int[level][];
        for(int i = 0;i<level;i++){//创建二维数组部分
            arr[i] = new int[i+1];
            for(int j = 0;j<=i;j++){
                if(j==i||j==0){//第一个 和 最后一个
                    arr[i][j] = 1;
                }else if(i>=2){//第三行开始
                    arr[i][j] = arr[i-1][j-1]+arr[i-1][j];
                }
            }
        }
        //打印二维数组部分
        for(int[] item:arr){
            for(int inItem:item){
                System.out.print(inItem + " ");
            }
            System.out.println("");
        }
    }

    /**
     * 27. 移除元素
     * 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
     *
     * 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
     *
     * 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
     * */
    public static void removeElement(int[] nums,int val) {
        int resoult = 0;
        for (int i = 0;i<nums.length;i++){
            if(nums[i]==val){
                for (int j = i+1;j<nums.length;j++){
                    nums[j-1] = nums[j];
                }
                nums[nums.length-1] = 0;
                System.out.println(Arrays.toString(nums));
                resoult++;
                i--;
            }
        }
        System.out.println("最终结果:"+Arrays.toString(nums)+"数组新长度:" + (nums.length-resoult));
    }


    /**
     * 找出数组中重复的数字。
     *
     *
     * 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
     * */
    public static void findRepeatNumber(int[] nums) {
        int num = 0;
        for(int i = 0;i<nums.length;i++){
            for(int j = nums.length-1;j>0 && j>i;j--){
                if(nums[i] == nums[j]){
                    num++;
                    System.out.println(nums[i]);
                }
            }
        }
    }


    public static void main(String[] args) {
//        ArrayDrill arrayDrill = new ArrayDrill();
//        arrayDrill.printCharArray();
//        arrayDrill.twoDimensionalArray();
//        arrayDrill.printPascalsTriangle(10);
//        char a = '\u25CF';//实心圆
//        char b = '\u25CB';//空心圆
//        System.out.println(a+" "+b);
//        int[] nums = {0,1,2,2,3,0,4,2};
////        int val = 2;
////        removeElement(nums,val);

        int[] nums1 = {1,1, 1};
        findRepeatNumber(nums1);
    }
}

循环

public class OneDrill {
    /**
     *  编程实现如下功能
     *  1.某人有100000元,每经过一次路口,需要交费
     *  当现金>50000时每次交5%
     *  现金<=50000时每次交1000
     *  计算可以经过多少次路口
     * */
    public int countPassNum(){
        double totalAmount = 100000;
        int num = 0;
        while(totalAmount>50000){
            totalAmount = totalAmount - totalAmount*0.05;
            num++;
            System.out.println("第"+num+"次"+ totalAmount);
            if(totalAmount<=50000){
                while(totalAmount<=50000){
                    totalAmount -= 1000;
                    num++;
                    System.out.println("第"+num+"次"+ totalAmount);
                    if(totalAmount-1000<0){
                        break;
                    }
                }
            }
        }
        return num;
    }

    //判断是否为闰年

    //判断一整数是否为水仙花数  水仙花数一个三位数,其各个数的立方和为其本身。
    public Boolean judgeNumIsFlower(double num){
        Boolean sign = false;
        double unit = num%10;
        double tensDigit = (num%100 - unit)/10;
        double hundredsDigit = (num-tensDigit*10-unit)/100;
        double sum = Math.pow(unit,3)+Math.pow(tensDigit,3)+Math.pow(hundredsDigit,3);
        if(num==sum){
            sign = true;
        }
        return sign;
    }

    //输出1-100不能被5整除的数,五个一行

    //输出a-z和A-Z

    //求出1 -1/2 +1/3 --- 1/100的和 --1 + 1+2 + 1+2+3 + 1234 +++ 1+--+100超出范围
    public String pointNum(){
        double sum1 =0.0;
        int sum2 =0;
        double numerator = 1.0;
        int[] numArray = new int[100];
        for(int i=1;i<=5;i++){
            //分数判断是否偶数
            if(i%2==0){
                sum1 -= numerator/i;
            }else{
                sum1 += numerator/i;
            }
            //整数部分
            sum2 = sum2+i;
            numArray[i-1] = sum2;
        }
        for(int num:numArray){
            sum2 += num;
        }
        //实际整数求和要少5050
        return "分数求和"+sum1 +'\n'+"整数求和"+sum2;
    }

    /**
     * 随机生成1-100的一个数,直到生成某个指定值,结束返回或输出循环的次数
     * */
    public void creatMath(int totalNum){
        int a = 0;
        int times = 0;
        while(a!=totalNum){
            a = (int)(Math.random()*100)+1;
//            System.out.println("a--"+ a);
            //可以使用if加上break来退出循环体
            if(a==totalNum){
                break;
            }
            times++;
        }
        System.out.println(times);
    }

字符串

public class StringDrill {
    /**
     * 13.罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
     * 字符          数值
     * I             1
     * V             5
     * X             10
     * L             50
     * C             100
     * D             500
     * M             1000
     * 输入: s = "III"
     * 输出: 3
     *
     * 输入: s = "IX"
     * 输出: 9

     * 输入: s = "LVIII"
     * 输出: 58
     * 解释: L = 50, V= 5, III = 3.
     * 示例 5:
     *
     * 输入: s = "MCMXCIV"
     * 输出: 1994
     * 解释: M = 1000, CM = 900, XC = 90, IV = 4.
     * */
    public void romanToInt() {
        String s = "LVIII";
        int resoult = 0;
        char[] sArr= s.toCharArray();
        int[] iArr = new int[sArr.length];
        for (int i = 0; i < sArr.length; i++) {
            switch (sArr[i]){
                case 'I': iArr[i] = 1;
                    break;
                case 'V': iArr[i] = 5;
                    break;
                case 'X': iArr[i] = 10;
                    break;
                case 'L': iArr[i] = 50;
                    break;
                case 'C': iArr[i] = 100;
                    break;
                case 'D': iArr[i] = 500;
                    break;
                case 'M': iArr[i] = 1000;
                    break;
            }
        }

        for (int i = 0; i < iArr.length; i++) {
            if(i+1<iArr.length){
                if(iArr[i]<iArr[i+1]){
                    resoult += iArr[i+1] - iArr[i];
                    i++;
                }else{
                    resoult += iArr[i];
                }
            }else{
                resoult += iArr[i];
            }
        }
        System.out.println(resoult);
    }

    /**
     * 9. 回文数
     * */
    public static void isPalindrome() {
        int a = 0;
        //Integer integer = new Integer(a);
        //自动装箱
        Integer integer = a;
        String str = integer.toString();
        int strLength = str.length();
        //判断位数是 双/单
        boolean sign = strLength % 2 == 0 ? true:false;
        if(sign){
            //双
            for(int i = 0;i < strLength / 2;i++){
                if(str.charAt(i)!=str.charAt(strLength -1 -i)){
                    System.out.println("双"+false);
                }
            }
        }else{
            //单
            for(int i = 0;i< (strLength-1)/2 ;i++){
                if(str.charAt(i)!=str.charAt(strLength -1 -i)){
                    System.out.println("单"+false);
                }
            }
        }
    }


    /**
     * 实现 strStr() 函数。
     *
     * 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回  -1 。
     * */
    public static void strStr(String haystack, String needle) {
        System.out.println(haystack.indexOf(needle));
    }

    public static void main(String[] args) {
//        isPalindrome();
        strStr("hello","ll");
    }
}

 

posted @ 2022-04-07 20:29  LoveDonkey  阅读(26)  评论(0编辑  收藏  举报