2022-09-07 javaDay3

2022-09-07  本文已影响0人  杨三毛同志

JAVA Day3 主要实现了一个存取款机的功能

<font color=blue size=4>刚刚交了作业,有点小问题就是变量首字母我大写了,大写表示常量,下次注意</font>


<font size=4 color=#998>eg: </font>

    1.  
    `System.out.println("请输入今天星期几:");
    Scanner scan = new Scanner(System.in);
    int day = scan.nextInt();
    switch(day){
        case 1:
            System.out.println("今天周一,吃面条");
        break;
        case 2:
            System.out.println("今天周二,吃螺蛳粉");
        break;
        case 3:
            System.out.println("今天周三,吃火锅");
        break;
        default:
            System.out.println("今天不吃饭");
            break;
    }`

    2. 
        `switch (day) {
        case 1, 2, 3:
            System.out.println("春天");
            break;
        case 4, 5, 6:
            System.out.println("夏天");
            break;
        case 7, 8, 9:
            System.out.println("秋天");
            break;
        default:
            System.out.println("冬天");
            break;
    }`

    3. `case 1:
        case 2:
        case 3:
            System.out.println("春天");
            break;`

<font color=#226>例题:运输公司对用户计算运费,路程越远每公里运费越低。
每公里每吨货物基本运费是 p(自定义基础运费),货物重量为 w 吨,距离为 s 公里,折扣为 d,总运费 f = pws(1-d)
s < 250km 折扣为0
250<= s < 500 2%
500<= s < 1000 5%
1000<= s < 2000 8%
2000<= s < 3000 10%
3000<= s 15%
</font>

    `System.out.println("请输入路程,货物重量:");
    final int p = 8;
    double w, s, d, f;
    Scanner scanner = new Scanner(System.in);
    s = scanner.nextDouble();
    w = scanner.nextDouble();
    d = 0;
    if(s < 250){
        d = 0;
    } else if (250<= s && s <500) {
        d = 0.02;
    } else if (500 <= s && s < 1000) {
        d = 0.05;
    }else if (1000 <= s && s < 2000) {
        d = 0.08;
    }else if (2000 <= s && s < 3000) {
        d = 0.1;
    }else if(s >= 3000){
        d = 0.15;
    }
    f = p * w * s * (1 -d);
    System.out.println("运费为:" + f);```

<font color=red>
String是字符类型不能用==来判断
</font>

PRACTICE

完成一个银行柜员机存取款程序,账户初始余额为500元
  1. 首先完成用户登录页面,

    使用if else语句进行逻辑判断返回数值

     `Scanner scanner = new Scanner(System.in);
     String name = "zhangsan";
     String psd = "201314";
     int money = 500;
     System.out.println("请输入账号:");
     String ipt = scanner.next();
     System.out.println("请输入账号:");
     String psdIpt = scanner.next();
     if (ipt.equals(name) && psdIpt.equals(psd)) {
         System.out.println(name + ",欢迎回来");
     } else {
         System.out.println("密码或用户名输入错误,请重新输入!");
     }`
    
  2. 登录页面完成后我们就可以在用户使用页面进行用户操作:

    首先要登录成功才可以进行下面的操作,所以在第一个if判定正确时展开下一步选择:

         `if (ipt.equals(name) && psdIpt.equals(psd)) {
         System.out.println(name + ",欢迎回来");
         System.out.println("请选择办理的业务:1. 存款,2.取款,3. 查询余额,4. 退出登录");
         int choice = scanner.nextInt();
         switch (choice) {
             case 1:
                 System.out.println("请输入存款额,金额需为100的倍数");
                 int count = scanner.nextInt();
                 money = money + count;
                 System.out.println("存款成功,您的余额为:" + money + "元");
                 break;
             case 2:
                 System.out.println("请输入取款金额:");
                 int draw = scanner.nextInt();
                 if (draw > money) {
                     System.out.println("您的余额不足!");
                 } else {
                     money = money - draw;
                     System.out.println("取款成功,您的余额为:" + money + "元");
                 }
                 break;
             case 3:
                 System.out.println("查询成功,您的余额为:" + money + "元");
                 break;
             case 4:
                 System.out.println("您已退出登录!");
                 break;
             default:
                 System.out.println("您的操作有误,请重新输入!");
                 break;
         }
     }`
    
  3. 在这里需要考虑的问题是只有四个选项所以采用了switch case语句,
    在取款的这一选项中需要考虑余额不足的因素,所以要嵌套使用if语句进行判断,最终可以实现取款的功能。

    在这次练习中,最大的问题就是总是忘记使用break语句,也就是老师所说的存款一会变一下,因为没有break,所以程序会不断地执行,直到整个程序的结束。
    需要注意的是money需要写在循环外部,应该定义为全局变量。

  4. 为了减少代码嵌套,所以声明一个布尔值boolean flag = false;如果登录成功,令flag=true;

    if(flag){ 进入功能选择 }

    可以将登录和存取功能分开,即模块化。

上一篇 下一篇

猜你喜欢

热点阅读