java学习-Day3

双色球代码java实现

package Day03;

import java.util.Random;
import java.util.Scanner;

public class TwoColourBall {
    //6个红球号码和1个蓝色号码组成,红球不能重复
    //红球在1-33里面选,蓝球在1-16里面选

    //一等奖:6+1=7 -- 1000万  二等奖:6+0=6 -- 500万   三等奖:5+1=6 -- 3000
    //四等奖:5+0  4+1=5 -- 200  五等奖:3+1 4+0=4 -- 10  六等奖:0+1  1+1   2+1 >0 且蓝球中 -- 5

    public static void main(String[] args){

        //1 生成中奖号码
        int[] numberRandomArray = winNumber();
        for (int i = 0; i < numberRandomArray.length; i++) {
            System.out.print(numberRandomArray[i]+" ");
        }
        //2 用户输入中奖号码
        int[] numberUserArray = userArray();
        for (int i = 0; i < numberUserArray.length; i++) {
            System.out.print(numberUserArray[i]+" ");
        }
        //3 对比  计算红球中奖个数,蓝球中奖个数
        int countRed = redCount(numberRandomArray,numberUserArray);
        int countBule =buleCount(numberRandomArray,numberUserArray);
        System.out.println("中奖金额为");
        price(countRed,countBule);



    }
    //生成中奖号码
    public static int[] winNumber(){
        int[] number = new int[7];
        Random r = new Random();
        for (int i = 0; i < 6; ) {
            int numRed = r.nextInt(33)+1;
            boolean flag = contains(number,numRed);
            if(!flag){
                number[i] = numRed;
                i++;
            }
        }
        int numBule = r.nextInt(16)+1;
        number[6] = numBule;
        return number;
    }
    //判断红球是否重复
    public static boolean contains(int[] arr,int num){
        boolean flag = false;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]==num){
                flag = true;
            }
        }
        return flag;
    }

    //用户输入中奖号码
    public static int[] userArray(){
        int[] numberUserArray = new int[7];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 6;) {
            System.out.println("请输入"+(i+1)+"红球数字");
            int numberRed = sc.nextInt();
            boolean flag = contains(numberUserArray,numberRed);
            if(numberRed>=1&&numberRed<=33&&!flag){
                numberUserArray[i] = numberRed;
                i++;
            }else if(flag){
                System.out.println("输入的红球重复了,请重新输入!");
            }else {
                System.out.println("红球数字应该在1-33之间,请重新输入!");
            }
        }
        System.out.println("请输入蓝球数字");
        for (int i = 0; i < 1;) {
            int numberBlue = sc.nextInt();
            if(numberBlue>=1&&numberBlue<=16){
                numberUserArray[6] = numberBlue;
                i++;
            }else {
                System.out.println("蓝球数字应该在1-16之间,请重新输入!");
            }
        }
        return numberUserArray;
    }
    //红球中奖个数
    public static int redCount(int[] numberRandomArray,int[] numberUserArray){
        int countRed = 0;
        for (int i = 0; i < numberRandomArray.length-1; i++) {
            for (int j = 0; j < numberUserArray.length-1; j++) {
                if(numberRandomArray[i]==numberUserArray[j]){
                    countRed+=1;
                }
            }
        }
        return countRed;
    }
    //蓝球中奖个数
    public static int buleCount(int[] numberRandomArray,int[] numberUserArray){
        int countbule = 0;
        int n = numberRandomArray.length-1;
        if(numberRandomArray[n]==numberUserArray[n]){
            countbule+=1;
        }
        return countbule;
    }

    //一等奖:6+1=7 -- 1000万  二等奖:6+0=6 -- 500万   三等奖:5+1=6 -- 3000
    //四等奖:5+0  4+1=5 -- 200  五等奖:3+1 4+0=4 -- 10  六等奖:0+1  1+1   2+1 >0 且蓝球中 -- 5
    public static void price(int countRed,int countBule){
        int sum = countRed+countBule;
        if(sum == 7){
            System.out.println("恭喜中奖1000万!");
        }else if(sum == 6&&countBule==0){
            System.out.println("恭喜中奖500万!");
        }else if(sum == 6&&countBule==1){
            System.out.println("恭喜中奖3000!");
        }else if(sum == 5){
            System.out.println("恭喜中奖200!");
        }else if(sum == 4){
            System.out.println("恭喜中奖10!");
        }else if(countBule==1){
            System.out.println("恭喜中奖5!");
        }
    }


}

二维数组:数组中存数组

静态初始化:
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2,元素3},{元素4,元素5,元素6}};
//建议这样定义,将一维数组写在单独一行
int[][] arr = new int[][]{
        {1,2,3},
        {4,5,6}
};
arr[0]:获取二维数组中第一个一维数组(地址)
arr[1]:获取二维数组中第一个一维数组索引为0的值
System.out.println(arr[0][1]);  // 2
动态初始化
数据类型[][] 数组名 = new 数据类型[m][n];
m:这个二维数组可以存放多少个一维数组
n:每一个一维数组可以存放多少元素
int[][] arr1 = new int[6][5];
//练习  计算每个季度的金额和全年的金额
        //第一季度:22,66,44
        //第二季度:77,33,88
        //第三季度:25,45,65
        //第四季度:11,66,99
        int[][] yearMonth = {
                {22,66,44},
                {77,33,88},
                {25,45,65},
                {11,66,99}
        };
        int yearMoney = 0;
        for (int i = 0; i < yearMonth.length; i++) {
            int monthMoney = 0;
            for (int j = 0; j < yearMonth[i].length; j++) {
                monthMoney+=yearMonth[i][j];
            }
            yearMoney +=monthMoney;
            System.out.println("第"+(i+1)+"的季度值为"+monthMoney);
        }
        System.out.println("一整年的季度值为"+yearMoney);

面向对象

类:是对象共同特征的描述

  • 成员变量(代表属性,名词)
  • 成员方法(代表动词,动词)
  • 构造器
  • 代码块
  • 内部类

对象:真实存在的具体东西

类名 对象名 = new 类名();
Phone p = new Phone();
package Day03;

public class Phone {

    //属性
    String brand;
    double price;

    //方法(行为)
    public void call(){
        System.out.println("手机可以打电话");
    }

    public void playGame(){
        System.out.println("手机可以打游戏");
    }
}

 

package Day03;

public class PhoneTest {
    public static void main(String[] args){
        //创建手机对象
//        类名 对象名 = new 类名();
        Phone p = new Phone();

        //使用对象
        //访问属性:对象名.成员变量
        p.brand = "小米";
        p.price = 1999.9;

        //获取手机对象的值
        System.out.println(p.brand);
        System.out.println(p.price);


        //访问行为:对象名.方法名()
        p.call();
        p.playGame();

    }

}

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

private: 权限修饰符,只能在本类中使用  set:给成员变量赋值  和  get:对外提供成员变量的值

set方法:给成员变量赋值  
get方法:对外提供成员变量的值
//调用
GrilFriend gf1 = new GrilFriend();
gf1.setName("小姚");
gf1.setAge(18);
gf1.setSex("女");

String name = gf1.getName();
System.out.println(name);
int age = gf1.getAge();
System.out.println(age);
String sex = gf1.getSex();
System.out.println(sex);

就近原则和this关键字  

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

构造方法:为了给成员变量赋值

package Day03;

public class Student {
    修饰符 类名(参数){
        方法体;
    }
}

特点

  • 方法名和类名完全一致
  • 没有返回值类型
  • 没有具体返回值,不能由return 带回结果

执行时机

  • 创建对象时候由虚拟机调用,不能手动调用构造方法
  • 没创建一次对象就会调用一次构造方法

构造方法注意

  • 如果没有定义构造方法,系统会给出默认的构造方法;如果定义了构造方法,系统将不再提供默认构造方法
  • 带参构造方法和无参构造方法虽然方法名相同,但是参数不同,这就叫构造方法的重载
  • 无论是否使用,都手动书写无参数构造方法和带全部参数方法
快捷键  alt+Fn+insert   插件:ptg

成员变量和局部变量 

成员变量局部变量区别
类中,方法外方法内,方法声明中位置
有默认初始化值五默认初始化值,需要提前赋值初始化
堆内存栈内存内存
随着对象的创建而存在,随着对象的消失而消失随着方法的调用而存在,随着方法运行结束而消失生命周期
类中有效当前方法有效作用域

面向对象格斗游戏

package Day03;

import java.util.Random;

public class Role {
    private String name;
    private int blood;
    private String sex;
    private String face;


    String[] boy = {"温文尔雅","玉树临风" , "气宇不凡", "风流倜傥", "品貌非凡","仪表堂堂","清新俊逸"};
    String[] gril = {"闭月羞花","国色天香","倾国倾城","貌美如花","明眸皓齿","冰肌玉骨","小家碧玉","窈窕淑女"};
    String[] attacks_desc={
            "%s使出了一招【背心钉】,转到对方的身后,一掌向%s背心的灵台穴拍去。",
            "%s使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向%s。",
            "%s大喝一声,身形下伏,一招【劈雷坠地】,捶向%s双腿。",
            "%s运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向%s。",
            "%s阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向%s。",
            "%s上步抢身,招中套招,一招【劈挂连环】,连环攻向%s。"
    };
    String[] injureds_desc={
            "结果%s退了半步,毫发无损",
            "结果给%s造成一处瘀伤",
            "结果一击命中,%s痛得弯下腰",
            "结果%s痛苦地闷哼了一声,显然受了点内伤",
            "结果%s摇摇晃晃,一跤摔倒在地",
            "结果%s脸色一下变得惨白,连退了好几步",
            "结果『轰』的一声,%s口中鲜血狂喷而出",
            "结果%s一声惨叫,像滩软泥般塌了下去"
    };

    public Role(){}
    public Role(String name, int blood,String sex) {
        this.name = name;
        this.blood = blood;
        this.sex = sex;
        //随机长相
        setFace(sex);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getBlood() {
        return blood;
    }

    public void setBlood(int blood) {
        this.blood = blood;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getFace() {
        return face;
    }

    public void setFace(String sex) {
        Random r = new Random();
        if(sex == "男"){
            int index = r.nextInt(boy.length);
            this.face =boy[index];
        }else if(sex == "女"){
            int index = r.nextInt(gril.length);
            this.face =gril[index];
        }else{
            this.face = "一塌糊涂";
        }

    }


    //攻击方法
    //方法的调用者攻击参数
    public void attack(Role role){
        //攻击描述
        Random r = new Random();
        int index = r.nextInt(attacks_desc.length);
        String kungFu = attacks_desc[index];
        System.out.printf(kungFu,this.getName(),role.getName());
        System.out.println(" ");

        //计算随机造成伤害1-20

        int hurt = r.nextInt(20)+1;

        //计算剩余血量
        int remainBlood = role.getBlood()-hurt;
        if(remainBlood<0){
            remainBlood=0;
        }
        role.setBlood(remainBlood);
        //受伤描述
        //血量大于90  索引0   血量大于80小于等于90  索引1
        //血量大于60小于等于70  索引2   血量大于50小于等于60  索引3
        //血量大于40小于等于50  索引4   血量大于30小于等于40  索引5
        //血量大于20小于等于30  索引6   血量大于0小于等于20  索引7
        if(remainBlood>90){
            System.out.printf(injureds_desc[0],role.getName());
        }else if(remainBlood>80){
            System.out.printf(injureds_desc[1],role.getName());
        }else if(remainBlood>70){
            System.out.printf(injureds_desc[2],role.getName());
        }else if(remainBlood>60){
            System.out.printf(injureds_desc[3],role.getName());
        }else if(remainBlood>50){
            System.out.printf(injureds_desc[4],role.getName());
        }else if(remainBlood>40){
            System.out.printf(injureds_desc[5],role.getName());
        }else if(remainBlood>30){
            System.out.printf(injureds_desc[6],role.getName());
        }else{
            System.out.printf(injureds_desc[7],role.getName());
        }
        System.out.println(" ");

    }

    public void info(){
        System.out.println("姓名:"+getName());
        System.out.println("血量:"+getBlood());
        System.out.println("性别:"+getSex());
        System.out.println("长相:"+getFace());
    }
}
package Day03;

public class RoleTest {
    public static void main(String[] args){
        //1 创建第一个角色
        Role r1 = new Role("小姚",100,"女");
//        r1.info();
        //2 创建第二个角色
        Role r2 = new Role("小张",100,"女");
//        r2.info();
        //3 开始格斗 回合制游戏
        while (true){
            //r1攻击r2
            r1.attack(r2);
            if(r1.getBlood()==0){
                System.out.println(r1.getName()+"KO了"+r2.getName());
                break;
            }
            r2.attack(r1);
            if(r2.getBlood()==0){
                System.out.println(r1.getName()+"KO了"+r2.getName());
                break;
            }


        }
    }
}

对象数组

package Day03;

public class GoodsTest {
    public static void main(String[] args){
        Goods g1 = new Goods("101","书",50,20);
        Goods g2 = new Goods("102","键盘",100,30);
        Goods g3 = new Goods("103","鼠标",200,80);
        Goods[] arr = new Goods[3];
        arr[0] = g1;
        arr[1] = g2;
        arr[2] = g3;
        for (int i = 0; i < arr.length; i++) {
            System.out.println("第"+i+"个商品信息:id为"+arr[i].getId()+",名字为"+arr[i].getName()
            +",价格为"+arr[i].getPrice()+",库存为"+arr[i].getRemain());
        }
    }

}

键盘录入对象数组

package Day03;

import java.util.Scanner;

public class CarTest {
    public static void main(String[] args) {
        Car[] arr = new Car[3];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            Car c = new Car();
            System.out.println("请输入第"+(i+1)+"个汽车品牌");
            String brand1 = sc.next();
            c.setBrand(brand1);
            System.out.println("请输入第"+(i+1)+"个汽车价格");
            int price = sc.nextInt();
            c.setPrice(price);
            System.out.println("请输入第"+(i+1)+"个汽车颜色");
            String color = sc.next();
            c.setColor(color);
            arr[i] = c;
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值