方法与流程控制

1.表达式&语句块

1.1表达式

Java中有运算符和运算数构成的一行语句,称为表达式

声明一个变量

给变量赋值

调用一个方法。。。。

1.2.语句块

把包含在{}之间的代码,称为语句块,语句块是由多行表达式构成的一个集合

表达式

一个分支

一个循环。。。

2.方法(method)

2.1.方法的概述

将实现某个特定功能的代码块封装称为一个整体,以实现重复使用的目的

可重复使用

便于维护

2.2方法定义

修饰符 +返回值+方法名+(参数列表)+{

语句块

}

2.3方法调用

静态方法直接可以在main方法中直接调用

普通方法先new对象,然后通过对象调用

2.4参数传递问题

参数传值他只传值,不传存储空间

2.5.return关键字

第一个作用

     当方法有返回值的时候,需要用return关键字返回值

     return关键字后面不能再有可执行代码

第二个作用

     中断程序

3.流程控制

3.1分支语句

3.1.1 if...

int a = 59;
        if(a >= 60)System.out.println("你考试及格了!"); 

3.1.2 if...else...

int a = 59;

        if (a >= 60){
            System.out.println("你考试及格了!");
        }else{
            System.out.println("你考试不及格!");
        }

3.1.3 if...else if...

int a = 3500;
        if(a < 1000){
            System.out.println("倔强青铜");
        }else if(a >= 1000 && a < 2000){
            System.out.println("不屈白银");
        }else if(a >= 2000 && a < 3000){
            System.out.println("荣耀黄金");
        }else if(a >= 3000 && a < 4000){
            System.out.println("华贵铂金");
        }else if(a >= 4000 && a < 5000){
            System.out.println("璀璨钻石");
        }else if(a >= 5000 && a < 6000){
            System.out.println("超凡打湿");
        }else{
            System.out.println("最强王者");
        }

根据提供的一个年份判断该年份一共有多少天?

public class Next {
    public static void main(String[] args) {
        Next next = new Next();
        next.m1();
    }
    public void m1(){
        Scanner sc = new Scanner(System.in);
        System.out.println("输入一个年份");
        int a = sc.nextInt();
        if (a%4==0 && a%100!=0 ){
            System.out.println(a+"年,是闰年,该年有366天");
            return;
        }
        System.out.println(a+"年,是平年,该年有365天");
    }
}

3.1.2 switch

除了‘if’语句,Java中还提供了‘switch’语句用于分支判断,‘switch’语句通常用于对某些特定值的分支。

switch中间的变量只能是int,byte、short、char、填到中间是在不损失精度的情况下向上转型为interesting,string通过底层算法(hash)转换成了int

语法:

switch(变量){

   case1:

         执行语句;

    break;

   case2:

         执行语句;

    break;

   case3:

         执行语句;

    break;

    default:

          执行语句:

}

判断季节: 

public class Jijie {
    public static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("请输入月份");
        int in = sc.nextInt();
        switch (in){
            case 3:
            case 4:
            case 5:
                System.out.println("春天");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏天");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋天");
                break;
            case 12:
            case 1:
            case 2:
                System.out.println("冬天");
                break;
            default:
                System.out.println("输入错误,没有这个月份");
                return;
        }
    }
}

递归:

方法自己调用自己

实例从1输出到100

public class Digui {
    //1-100输出
    public static void main(String[] args) {
        Digui digui =new Digui();
        Digui.m1();
    }
    public static int i =0;
    public static void m1(){
      if (i<100){
          i++;
          System.out.println(i);
          m1();
      }
    }
}

练习:从1加到100

public class Digui {
    public static void main(String[] args) {
        Digui digui =new Digui();
        Digui.m1();
    }
    public static int i =0;
    public static int sum =0;
    public static void m1(){
      if (i<100){
          i++;
          sum+=i;
          m1();
      }
        System.out.println(sum);
    }
}

4.扩展:标准输入&随机数

4.1 标准输入(`System.in`)之Scanner类

Java为了获取用户的输入,提供了一个scanner工具类,获取系统输入:System.in

nextInt()     获得用户输入的整数

next()        获得用户输入的字串符

public class Sc {
    public static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("请输入一段数字");
        int a = sc.nextInt();
        System.out.println(a);
    }
}

4.2随机数

随机数是由数学类Math提供的一个静态方法random()生成的,生成的随机值范围在0-1之间的浮点数

public class Suijishu {
    public static void main(String[] args) {
        double a = Math.random();
        System.out.println(a);
        int b = (int)(Math.random()*100);
        System.out.println(b);
    }
}

练习题:

1.先随机一个数字

2.让用户一个数字

3.输入之后让输入的数字与随机数相比较,如果比随机数大,则提示大了,小了就提示小了,并提示用户重新输入数字,相等就提示猜对了,整个程序结束

public class Demo01 {
    static Scanner sc = new Scanner(System.in);
    static int a = (int)(Math.random()*100);
    public static void main(String[] args) {
    Demo01 demo01 = new Demo01();
    Demo01.m1();
    }
    public static void m1(){
        System.out.println("请输入一个数字");
        int in = sc.nextInt();
        if (in>a){
            System.out.println("大了");
        }else if (in<a){
            System.out.println("小了");
        }else {
            System.out.println("猜对了");
            return;
        }
        m1();
    }
}

1. 模拟地下城与勇士(DNF)的装备强化过程:

   提示1:

- DNF装备强化在+1~+3 不会失败;
- +4~+7,失败后物品原有强化等级降低1级;
- +8~+10,失败后掉3级;
- 10上11或以上失败就爆了。

提示2:

- DNF装备强化1~3级,成功率100%
- DNF装备强化3~4级,成功率95%
- DNF装备强化4~5级,成功率90%
- DNF装备强化5~6级,成功率80%
- DNF装备强化6~7级,成功率75%
- DNF装备强化7~8级,成功率62.1%
- DNF装备强化8~9级,成功率53.7%
- DNF装备强化9~10级,成功率41.4%
- DNF装备强化10~11级,成功率33.9%
- DNF装备强化11~12级,成功率28%
- DNF装备强化12~13级,成功率20.7%
- DNF装备强化13~14级,成功率17.3%
- DNF装备强化14~15级,成功率13.6%
- DNF装备强化15~16级,成功率10.1%  

实现流程:

要求输入装备的原始等级,输入1执行强化,根据原始等级以及强化的成功率,显示装备的强化结果
 

public class Demo02 {
    Scanner sc = new Scanner(System.in);
    int i = 1;     //变量等级
    public static void main(String[] args) {
        Demo02 demo02 = new Demo02();
        demo02.start();
    }

    public void start(){
        System.out.println("是否继续强化装备");
        System.out.println("1.强化");
        System.out.println("2.退出游戏");
        int in = sc.nextInt();
        switch (in){
            case 1:
                intensify();   //强化
                start();
                break;
            case 2:
                System.out.println("欢迎下次再来!");
                return;
        }
    }

    private void intensify() {
        int a = (int)(Math.random()*100);
        System.out.println("你现在的装备等级是"+i);
        if (i<3){
            i++;
            System.out.println("强化成功!");
        }else if (i<4 && a>5){
            i++;
            System.out.println("强化成功!");
        }else if (i<4 && a<5){
            i--;
            System.out.println("强化失败!");
        }else if (i<5 && a<90){
            i++;
            System.out.println("强化成功!");
        }else if (i<5 && a>90){
            i--;
            System.out.println("强化失败!");
        }else if (i<6 && a<80){
            i++;
            System.out.println("强化成功!");
        }else if (i<6 && a>80){
            i--;
            System.out.println("强化失败!");
        }else if (i<7 && a<75){
            i++;
            System.out.println("强化成功!");
        }else if (i<7 && a>75){
            i--;
            System.out.println("强化失败!");
        }else if (i<8 && a<62){
            i++;
            System.out.println("强化成功!");
        }else if (i<8 && a>62){
            i-=3;
            System.out.println("强化失败!");
        }else if (i<9 && a<54){
            i++;
            System.out.println("强化成功!");
        }else if (i<9 && a>54){
            i-=3;
            System.out.println("强化失败!");
        }else if (i<10 && a<41){
            i++;
            System.out.println("强化成功!");
        }else if (i<10 && a>41){
            i-=3;
            System.out.println("强化失败!");
        }else if (i<11 && a<34){
            i++;
            System.out.println("强化成功!");
        }else if (i<11 && a>34){
            System.out.println("强化失败!游戏结束!");
            return;
        }else if (i<12 && a<28){
            i++;
            System.out.println("强化成功!");
        }else if (i<12 && a>28){
            System.out.println("强化失败!游戏结束!");
            return;
        }else if (i<13 && a<21){
            i++;
            System.out.println("强化成功!");
        }else if (i<13 && a>21){
            System.out.println("强化失败!游戏结束!");
            return;
        }else if (i<14 && a<17){
            i++;
            System.out.println("强化成功!");
        }else if (i<14 && a>17){
            System.out.println("强化失败!游戏结束!");
            return;
        }else if (i<15 && a<14){
            i++;
            System.out.println("强化成功!");
        }else if (i<15 && a>14){
            System.out.println("强化失败!游戏结束!");
            return;
        }else if (i<16 && a<10){
            i++;
            System.out.println("强化成功!以提升至满级:"+i);
            return;
        }else if (i<16 && a>10){
            System.out.println("强化失败!游戏结束!");
            return;
        }
    }
}

 练习.银行取钱

进入系统需要输入账户和密码

主菜单需要有查询余额、取款、存款、退出系统

只有退出系统才能结束程序,其它操作不能结束

密码输入错误三次,自动锁定账户(提示账户锁定,无法再登录)

每次取钱需要输入随机的四位数验证码,才能取钱成功

public class Dome03 {
    Scanner sc = new Scanner(System.in);
    int money = (int)(Math.random()*1000);

    public static void main(String[] args) {
        Dome03 dome03 = new Dome03();
        dome03.dl();
    }
    public void dl(){
        System.out.println("建设银行欢迎您!");
        System.out.println("请输入账号(手机号码)");
        String number = sc.next();
        System.out.println("请输入密码(任意数字加小写字母)");
        String password = sc.next();
        start(number,password);
    }
    public void start(String number,String password){
        System.out.println("尊敬的"+number+"用户您好!请选择您需要的操作");
        System.out.println("1.查询余额");
        System.out.println("2.存钱");
        System.out.println("3.取钱");
        int in = sc.nextInt();
        switch (in){
            case 1:
                look();
                start(number,password);
                break;
            case 2:
                save();
                start(number,password);
                break;
            case 3:
                draw(password);
                start(number,password);
                break;
            default:
                System.out.println("欢迎下次再来!");
                return;
        }
    }

    private void look() {
        System.out.println("你现在卡内余额是"+money+"元!");
    }

    private void save() {
        System.out.println("请输入您要存储的金额!");
        int c = sc.nextInt();
        money+=c;
        System.out.println("存储成功!");
    }

    private void draw(String password) {
        int y = (int)(Math.random()*9000+1000);
        int j = 0;
        System.out.println("请输入密码");
        String m = sc.next();
        if (m.equals(password)) {
            System.out.println("请输入要取出的金额");
            int q = sc.nextInt();
            System.out.println("请输入验证码" + y);
            int y1 = sc.nextInt();
            if (y == y1) {
                if (q < money) {
                    money -= q;
                    System.out.println("取出成功");
                }
                        } else {
                draw(password);
                                }
                        } else {
            if (j < 3) {
                draw(password);
                j++;
                                }
            System.out.println("输入次数超过三次,账户锁定");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值