java自学DAY03

综合练习

案例买飞机票
public static void main(String[] args) {
//代码可以简化 抽取公共代码成方法
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入月份:");
        int month = sc.nextInt();
        System.out.println("请输入机票原价:");
        int ticket = sc.nextInt();
        System.out.println("请输入舱型,0头等舱,1经济舱");
        int seat = sc.nextInt();
        if(month >= 5 && month <=10){
            if(seat == 0){
                ticket = (int)(ticket * 0.9);
            }else if(seat == 1){
                ticket = (int)(ticket * 0.85);
            } else {
                System.out.println("没有这个舱位");
            }

        }else if((month>=1&&month<=4)||((month>=11 && month<=12))){
            if(seat == 0){
                ticket = (int)(ticket * 0.7);
            }else if(seat == 1){
                ticket = (int)(ticket * 0.65);
            } else {
                System.out.println("没有这个舱位");
            }
        }
        System.out.println(ticket);
    }

抽取方法简化后:

  public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入月份:");
        int month = sc.nextInt();
        System.out.println("请输入机票原价:");
        int ticket = sc.nextInt();
        System.out.println("请输入舱型,0头等舱,1经济舱");
        int seat = sc.nextInt();
        if(month >= 5 && month <=10){
            ticket = getTicket(ticket, seat, 0.9, 0.85);

        }else if((month>=1&&month<=4)||((month>=11 && month<=12))){
            ticket = getTicket(ticket, seat, 0.7, 0.65);
        }
        System.out.println(ticket);
    }

    private static int getTicket(int ticket, int seat, double v, double v2) {
        if (seat == 0) {
            ticket = (int) (ticket * v);
        } else if (seat == 1) {
            ticket = (int) (ticket * v2);
        } else {
            System.out.println("没有这个舱位");
        }
        return ticket;
    }

抽取代码为方法 可以利用idea自带的快捷键方式:ctrl+alt+M自动抽取代码

案例找质数


 

public static void main(String[] args) {
        int count = 0;
        for (int i = 101; i < 200; i++) {
            boolean flag = true;
            for (int j = 2; j < i; j++) {
                if(i % j == 0){
                    flag = false;
                    break;
                }
            }
            if(flag){
                count++;
                System.out.println( i+"是质数");
            }
        }
        System.out.println("一共有" + count + "个质数");
    }

案例开发验证码

public static void main(String[] args) {
        //数组中存大小写字母 然后从中抽取四个字母
        char[] chs = new char[52];
        for (int i = 0; i < chs.length; i++) {
            //运用ASCII码表知识
            if (i <= 25) {
                //添加小写字母 a对应的ASCII码为97
                chs[i] = (char) (97 + i);
            } else {
                //添加大写字母 A对应65
                chs[i] = (char) (65 + i - 26);
            }
        }
        String res = "";
        //随机抽取四个字母
        Random r = new Random();
        for (int i = 0; i < 4; i++) {
            int randomIndex = r.nextInt(chs.length);
            res += chs[randomIndex];
        }
        int num = r.nextInt(10);
        res += num;
        System.out.println(res);

    }

案例评委打分 

crtl+f6一次性改变量名


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

public class tses04 {
    public static void main(String[] args) {
        int[] scores = getScores();
        int sum = getSum(scores);
        int avg = (sum - getMax(scores) - getMin(scores)) / (scores.length - 2);
        System.out.println("总分" + sum);
        System.out.println("最高分" + getMax(scores));
        System.out.println("最低分" + getMin(scores));
        System.out.println("去除最高分最低分后平均分" + avg);

    }

    public static int[] getScores() {
        int[] scores = new int[6];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < scores.length; ) {
            System.out.println("请输入分数:");
            int score = sc.nextInt();
            if (score>= 0 && score <= 100) {
                scores[i] = score;
                i++;//放这里是因为如果输入的不符合规则的话,那就让i一直处于原值,符合规则才让他++
            } else {
                System.out.println("分数错误,请重新输入:");
            }

        }
        return scores;

    }

    public static int getSum(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum = sum + arr[i];
        }
        return sum;
    }

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

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

 案例数字加密

 

public class test05 {
    public static void main(String[] args) {
        int[] arr = getArr(1983);
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i] + 5;
        }
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i] % 10;
        }
        for (int i = 0,j = arr.length-1; i < j; i++,j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
//        for (int i = 0; i < arr.length; i++) {
//            System.out.print(arr[i] + " ");
//        }
        int num = 0;
        for (int i = 0; i < arr.length; i++) {
            num = num*10 + arr[i];
        }
        System.out.println(num);
    }

    public static int[] getArr(int number) {
        int temp = number;
        int count = 0;
        while(number != 0){
            number = number /10;
            count++;
        }
        int[] arr = new int[count];
        int index = arr.length -1;
        while(temp!=0){
            int ge = temp % 10;
            temp = temp / 10;
            arr[index] = ge;
            index --;
        }
        return arr;
    }
}

 案例抽奖

优化后

package Tests;

import java.util.Random;

public class test06 {
    public static void main(String[] args) {
        //打乱顺序
        int[] arr = {588,2,888,123,1000};
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            //获取随机索引
            int  randomIndex = r.nextInt(arr.length);
            //拿着i和随机索引上的值交换
            int temp = arr[i];
            arr[i] = arr[randomIndex];
            arr[randomIndex] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

面向对象 

:是共同特征的描述
对象:是真实存在的实例

定义类的补充注意事项:

1、用来描述一类事务的类,专业叫做javabean类,在这个类中是不写main方法的。

2、在以前编写main方法的类叫做测试类,可以在测试类中创建javabean类的对象并进行赋值调用。

3、类名首字母建议大写,英文 有意义,满足驼峰模式,不能用关键字,要满足标志符规定。

4、一个代码文件中可以定义多个类,但是只能一个类是public修饰的,public修饰的类名必须是java代码的文件名称。

面向对象的三大特征:封装 继承 多态
封装:

对象代表什么,就得封装对应的数据,并提供数据对应的行为。

就近原则:

System.out.println(age);//就近原则先找局部变量 找不到再找成员变量
System.out.println(this.age);//直接找成员变量

this的作用:可以区分成员变量和局部变量。

构造方法:

1、构造方法的作用:创造对象的时候,由虚拟机自动调用,给成员变量进行初始化的。(“构造方法的作用就是用来创建对象的”这句话是错的)

2、构造方法的种类及作用

无参构造方法:初始化对象时,成员变量的数据均采用默认值。

有参数构造方法:在初始化对象的时候,同时可以为对象赋值。

3、构造方法的注意事项:

任意类定义出来,默认就带了无参构造器,写不写都有。

一旦有了有参构造器,就没有无参数构造器了,此时就要自己写无参构造器了。

建议任何时候都写上空参和带全部参数的构造方法。

4、构造方法的格式:

方法名和类名相同,大小写也要一致。

没有返回值类型,连void都没有。

没有具体的返回值(不能由return带回结果数据)

自动生成javabean构造方法快捷键:alt+insert或者alt+Fn+insert或者利用PTG插件生成标准javabean.

this的内存原理:

this的本质:代表方法调用者的地址值

成员变量和局部变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值