java编程思路思想及案例练习(最近学习总结)

本文分享了Java编程中如何通过分解任务、使用分支结构处理不同情况的案例,包括机票优惠计算、随机验证码生成、评委打分和数字加密。作者强调了方法设计、输出引用和返回值的使用注意事项。
摘要由CSDN通过智能技术生成

前言:

学了java的基础语法,但运用还不是很流畅,所以练习些案例,整理些心得。

 编程思路思想

1,实验由多个方法组成,所以碰到需要实现的程序时,需要先分析程序,思考程序可以拆分成什么功能,然后根据功能去编写方法,尽可能实现每一个方法对应一项功能。

2,当程序划分成每一个方法时,分析方法是否需要接受数据

3,随即分析方法是是否需要返回数据

4,遇到需要通过判断数据在哪个区间执行的功能时,用if分支结构比较有效

5,遇到需要通过判断数据匹配哪个值执行的功能时,用switch分支结构有效

案例

练习1:飞机票案例

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

   public static void main(String[] args) {
        double pri=sys(1000, 11, "头等舱");
        System.out.println(pri);
    }
    public static double sys(double pri, int mon, String cang) {
        if (mon >= 5 && mon <= 10) {
            switch (cang) {
                case "头等舱":
                    pri *= 0.9;
                    break;
                case "经济舱":
                    pri *= 0.85;
                    break;
            }
        } else {
            switch (cang) {
                case "头等舱":
                    pri *= 0.7;
                    break;
                case "经济舱":
                    pri *= 0.65;
                    break;
            }
        }
        return pri;
    }

实验成功。

但实验时所遇到的问题是:如果在方法中设定了输出结果及返回值,那么在main方法中引用输出时,结果会输出两遍。

练习2:生成随机验证码

public class textdemo1 {
    
    public static void main(String[] args) {
        String re =code(5);
        System.out.println(re);
    }
    public static String code(int n){
        Random r = new Random();
        String fu = "";
        for (int i = 1; i <= n; i++) {
           int la = r.nextInt(3);

            switch (la){
                case 0 :
                fu += r.nextInt(10);
                break;
                case 1:
                    char n1= (char)(r.nextInt(26)+65);
                   fu += n1;
                   break;
                case 2:
                  char n2 =(char)(r.nextInt(26)+97);
                    fu += n2;
                    break;
            }
        }
        return fu;
    }
}

实验成功

实验时遇到的问题:同行输出数据需要用String相连,不然有可能会相加

实验3:评委打分,求出截断平均值(去除最大值及最小值)

public class textdemo2 {
    
    public static void main(String[] args) {
        System.out.println(la(6));

    }
    public static double la(int num){

        int [] lol = new int[num];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < lol.length; i++) {
            System.out.println("请输入第"+(i +1)+"位老师的成绩");
            lol[i]=sc.nextInt();
        }
        int sum = 0;
        int max = lol[0];
        int min = lol[0];
        for (int i = 0; i < lol.length ; i++) {
            sum += lol[i];
            if (max < lol[i]){
                max=lol[i];
            }
            if (min > lol[i]){
                min = lol[i];
            }
        }
        double re=(sum-max-min)/(num -2);
        return re;
    }
}

实验成功

遇到的问题:1,最大索引为“length-1”,不是length;2,两种情况最好分别写代码。

实验4:数字加密

某系统的数字密码是一个四位数,如1983,为了安全,需要加密后再传输,加密规则是对密码中的每位数,都加5,在对10求余数,最后将所有数字顺序反转,得到一串加密后的新数请设计出满足本需求的加密程序

public static void main(String[] args) {
        System.out.println("结果为:"+la(1983));
    }
    public static String la (int num){
        int [] nums = ll(num);
        String fu = "";
        for (int i = 0; i <nums.length ; i++) {
          nums[i] = (nums[i] + 5)%10;
        }

           re(nums);

        for (int i = 0; i < nums.length; i++) {
            fu +=nums[i];
        }

        return fu;
    }
    public static void re (int [] nums){
        for (int i = 0, j = nums.length -1; i < j ; i++,j--) {
            int temp = nums[j];
            nums[j]= nums[i];
            nums[i]=temp;
        }


    }
    public static int [] ll (int num){
        //1983拆成数组
        int [] nums = new int[4];
        nums [0] = num / 1000 ;
        nums [1] = (num /100)%10;
        nums [2] = (num /10)%10;
        nums [3] = num %10;
        return  nums;
    }

实验成功

没遇到太多的问题

练习5:复制数列

请把一个整形数组,例如存了数据:11,22,33,拷贝成一个一模一样的新数组出来

public static void main(String[] args) {
        int [] num = {11,22,33};
        int [] num1 = la(num);
        ll(num1);
    }
public static void ll(int [] num){
    System.out.print("[");
    for (int i = 0; i < num.length ; i++) {
        System.out.print(i == num.length-1? num[i]:num[i]+",");
    }
    System.out.print("]");
}

    public static int [] la (int []num){
        int [] num1 = new int [num.length];
        for (int i = 0; i < num.length; i++) {
            num1[i] = num [i];
        }
        return num1;
    }

实验成功

没有遇到大问题

总结:

需要注意空行和空列的问题,同时需要注意方法的输出引用及返回值的使用!

撒花!

---------------------------------------------------------------------------------------------------------------------------------

最后 

如果您看到了这篇文章,同时您也在学习java,希望您阅读这篇文章,希望与您一起讨论

基于黑马程序员的java学习笔记(持续更新)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值