菜鸟学Java 案例

demo1:机票计价

案例:用户购买机票时,机票原价会按照淡季、旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折,11月到来年4月为淡季,头等舱7折,经济舱6.5折请开发程序计算出用户当前机票的优惠价。

package it.heima.cesahihaha;

public class demo1 {
    
    
    public static void main(String[] args) {
    
    
        double price = count(10, 1000, "经济舱");
        System.out.println("折后价:" + price);
    }
    public  static double count(int month, double price, String type){
    
    
        //判断是单击还是旺季
        // 分别判断舱位并计算价格

        if(month <= 10 && month >=5 ){
    
    
            switch (type) {
    
    
                case "经济舱" :
                    price *= 0.5;
                    break;
                case "头等舱" : price *= 0.7;
            }
        }else{
    
    
            switch (type) {
    
    
                case "经济舱" :
                    price *= 0.9;
                    break;
                case "头等舱" :
                    price *= 0.8;
                    break;
            }
        }

        return price;
    }
}

demo2: 生成随机数

在这里插入图片描述

package it.heima.cesahihaha;

import java.util.Random;

public class demo1 {
    
    
    public static void main(String[] args) {
    
    
        String code = coding(5);
        System.out.println(code);
    }

    public static String coding(int n){
    
    
        String codes = "";
        for (int i = 0; i < n; i++) {
    
    
            Random random = new Random();
            int r = random.nextInt(3);
            switch(r){
    
    
                case 0:
                    int c = random.nextInt(9);
                    codes += c;
                    break;
                case 1:
                    int d = random.nextInt(25) + 65;
                    codes += (char)d;
                    break;
                case 2:
                    int e= random.nextInt(25) + 97;
                    codes += (char)e;
                    break;
            }

        }
        return codes;
    }
}

demo3:评委打分案例

需求:在唱歌比赛中,可能有多名评委要给选手打分,分数是[0 - 100]之间的整数。选手最后得分为:去掉最高分、最低分后剩余分数的平均分,请编写程序能够录入多名评委的分数,并算出选手的最终得分

package it.heima.cesahihaha;

import com.sun.istack.internal.NotNull;

import java.util.Scanner;

public class demo1 {
    
    
    public static void main(String[] args) {
    
    

        // 获取人数
        // 传入方法,计算平均分数
        // 打印分数

        double[] score = scorefunction(6);
        System.out.println("去掉一个最高分:"+ score[1] + "去掉一个最低分:"+ score[2] + "最后平均分:"+score[0]);
    }

    
    public static double[] scorefunction(@NotNull int n){
    
    

        // 遍历n次获取输入分数
        // 根据每次输入分数,找出极值
        // 全部输入求和,减去极值,计算平均
        // 返回分数
        Scanner scanner = new Scanner(System.in);
        double max = 0.;
        double min = 0.;
        double scoreavg = 0.0;
        
        for (int i = 0; i < n; i++) {
    
    
            double input = scanner.nextDouble();
            if(i==0){
    
    
                max = input;
                min = input;
            }
            if(input > max){
    
    
                max = input;
            }
            if (input < min){
    
    
                min = input;
            }
            scoreavg += input;
        }
        scoreavg -= (min+max);
        scoreavg = scoreavg/(n-2);

        double[] values = new double[3];
        values[0] = scoreavg;
        values[1] = max;
        values[2] = min;
        return values;
    }
}

java方法前面 @NotNull是干什么的,如何工作?

在Java中,@NotNull是一个用于注解方法参数、字段或返回值的标记。它用于指示某个元素(参数、字段或返回值)不能为null。这个注解的目的是为了提高代码的可靠性和可读性,通过明确表示某个元素不能为空,可以减少潜在的空指针异常。

@NotNull注解本身并不会改变代码的行为或实际上进行任何运行时的检查。它只是一种元数据,用于提供额外的信息给开发工具、静态分析器或其他相关工具。这些工具可以读取这些注解,并根据注解的要求进行验证、警告或错误报告。

例如,使用带有@NotNull注解的参数时,开发工具可以静态分析代码并检查是否有可能传递null值给该参数。如果发现潜在的问题,开发工具可以发出警告或错误,以帮助开发人员及早发现问题。

这里是一个示例代码,演示了如何使用@NotNull注解

public class Example {
    
    
    public void processUser(@NotNull String userName) {
    
    
        // 方法体省略
    }
}

在上述代码中,processUser方法的userName参数被标记为@NotNull,意味着该参数不能为null。开发工具可以根据这个注解来验证方法的调用是否遵守这个要求。

请注意,@NotNull注解不是Java语言的原生注解,它通常是由第三方库或框架提供的。在实际使用时,你需要使用支持该注解的工具或库,并确保在构建和分析过程中启用了相应的检查。

demo4:数字加密

在这里插入图片描述

package it.heima.cesahihaha;


import java.util.Arrays;
import java.util.Scanner;

public class demo1 {
    
    
    public static void main(String[] args) {
    
    
        // 获取一个数字a
        // 传给加密程序f
        // 输出加密后的数字b
        // 对数字b进行解密得到结果c
        // 输出ac是否相等

        Scanner scanner = new Scanner(System.in);
        System.out.println("输入原码:");

        while(true) {
    
    
            int sc = scanner.nextInt();
            if (sc < 0) {
    
    
                System.out.println("请输入大于0的数字:");
            }else{
    
    
                int[] b = jiami(sc);
                System.out.println("密文:" + Arrays.toString(b));
                int[] c = jiemi(b);
                System.out.println("解码:" + Arrays.toString(c));
                juge(sc, c);
                break;
            }
        }



    }

    public static int[] jiami(int a){
    
    
        // 输入数字a
        // 加密
        //输出加密后的数字b

        int[] list = number2list(a);
        System.out.println("原码转成数组 :"+Arrays.toString(list));
        int index = list.length;
//        System.out.println("length: " + index);
        int[] reverlist = new int[index];

        for (int i = 0; i < index; i++) {
    
    
            reverlist[index-1-i] = jia(list[i]);
        }

        return reverlist;
    }
//    public static int list2number(int[] list){
    
    
//        int len = list.length;
//        int chen = 1;
//        int sum = 0;
//        for (int i = 0; i < len; i++) {
    
    
//            sum += list[len-1-i] * chen;
//            chen *= 10;
//        }
//        return sum;
//    }

    public static int[] number2list(int a){
    
    
        // 判断数字长度
        int index = 1;
        int chushu = 1;
        while(true){
    
    
            chushu *= 10;
            index += 1;
            if ((a / chushu)<10){
    
    
                break;
            }
        }
        System.out.println("长度:"+index);
        // 数组存值
        int[] list = new int[index];

        for (int i = 0; i < index ; i++) {
    
    
            int a1 = a % 10;
            list[index-1-i] = a1;
            a /= 10;
        }
        return list;
    }

    public static int jia(int e){
    
    
        return (e + 5) %10;
    }

    public static int jie(int e){
    
    
        if (e > 4){
    
    
            return e-5;
        }else{
    
    
            return e+10-5;
        }
    }

    public static int[] jiemi(int[] b){
    
    
        // 输入数字b
        // 解密
        // 输出解密数字c
        int[] list = b;
        int len = list.length;
        int[] reverlist = new int[len];
        for (int i = 0; i < len; i++) {
    
    
            reverlist[len-1-i] = jie(list[i]);
        }
        return reverlist;
    }

    public static void juge(int a, int[] c){
    
    
        // 返回布尔
        int[] t0 = number2list(a);
        System.out.println("判断时c数组 :"+Arrays.toString(c));
        for (int i = 0; i < t0.length; i++) {
    
    
            if (t0[i] != c[i]){
    
    
                System.out.println("决策:" + false);
                return;
            }
        }
        System.out.println("决策:" + true);
    }
}


测试

输入原码:
1234567890
长度:10
原码转成数组 :[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
密文:[5, 4, 3, 2, 1, 0, 9, 8, 7, 6]
解码:[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
长度:10
判断时c数组 :[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
决策:true

上面的代码也存在一些漏洞,伙计们自行研究吧!

简介java中split用法
在Java中,split()是一个用于字符串分割的方法。它接收一个正则表达式作为参数,并将字符串分割成一个字符串数组。

下面是split()方法的语法:

public String[] split(String regex)

参数说明:

regex:表示用于分割字符串的正则表达式。
返回值:

String[]:包含分割后的子字符串的数组。
示例用法:

String str = "Hello,World,Java";
String[] parts = str.split(","); // 使用逗号作为分割符

在上面的示例中,原始字符串"Hello,World,Java"通过split(“,”)方法使用逗号作为分割符进行分割,将被分割成一个包含三个子字符串的数组:[“Hello”, “World”, “Java”]。

注意事项:

split()方法中的参数可以是任何合法的正则表达式。例如,如果你想使用句点作为分割符,可以使用".“作为参数。
如果正则表达式中含有特殊字符,需要使用双斜杠”\“进行转义。例如,如果要使用斜杠作为分割符,可以使用”\“作为参数。
如果想限制分割的次数,可以使用带有限制次数参数的split()方法。例如,使用split(”,", 2)可以将字符串分割成两部分,而不是分割成多个子字符串。
这就是Java中split()方法的简单介绍和用法。使用split()方法可以方便地将字符串按照指定的分割符进行分割,并得到一个字符串数组。

如何将String “1”转换成int 1 ?

要将字符串 “1” 转换为整数 1,可以使用 Integer 类的静态方法 parseInt()。

下面是一个示例代码:

String str = "1";
int num = Integer.parseInt(str);

在上面的代码中,我们使用 Integer.parseInt(str) 将字符串 str 转换为整数类型的变量 num。

需要注意以下几点:

如果字符串不能被解析为有效的整数,例如 “abc”,将抛出 NumberFormatException 异常。因此,在进行转换之前,最好确保字符串可以成功解析为整数。
如果字符串表示的数值超出了整数的范围,也会抛出 NumberFormatException 异常。例如,如果字符串为 “2147483648”,超过了 int 类型的最大值 2147483647。
如果你希望在转换过程中处理异常,可以使用 try-catch 块来捕获 NumberFormatException 异常。

String str = "abc";
try {
    
    
    int num = Integer.parseInt(str);
    System.out.println(num);
} catch (NumberFormatException e) {
    
    
    System.out.println("无法解析字符串为整数。");
}

上述代码会在无法解析字符串为整数时输出"无法解析字符串为整数。"。

总结起来,要将字符串 “1” 转换为整数 1,可以使用 Integer.parseInt() 方法。


嘿嘿,前面的demo4漏洞改正是:应该自定义number2string、string2number进行转换…

猜你喜欢

转载自blog.csdn.net/AdamCY888/article/details/131458730