Java基础编程题(7.31)

目录

总结

这段时间由于上夜班没有生物钟调整过来,在加上自己比较懒,所以就没有写博客,前两天去上课做了几道编程题,由于没有按时完成,后来剩下的一道也由于我较懒所以没写,因此就把我写的两道题写出来吧!

第一道 支付问题

利用面向对象的思想实现一套代码,要求一个APP支持微信支付,支付宝支付,银联支付,以后甚至更多的支付方式。支付通常包含鉴权(authorization)、支付订单生成(generateBill)、最后确认支付(pay)过程。

实现代码设计和代码如下:
代码块设计

//pay.java
package com.Dinkben.pay;
//编写一个接口,定义authorization,generateBill,pay方法
public interface Pay {
    public abstract void authorization();
    public abstract void generateBill();
    public abstract void payProcess();
}
//AliPay.java
package com.Dinkben.pay;
//支付宝支付
public class AliPay implements Pay {
    @Override
    public void authorization() {
        System.out.println("请授予支付宝支付权限");
    }
    @Override
    public void generateBill() {
        System.out.println("已生成账单");
    }
    @Override 
    public void payProcess() {
        System.out.println("支付已确认");
    }
}
//UnionPay.java
package com.Dinkben.pay;
//银联支付
public class UnionPay implements Pay {
    @Override
    public void authorization() {
        System.out.println("请授予银联支付权限");
    }
    @Override
    public void generateBill() {
        System.out.println("已生成账单");
    }
    @Override
    public void payProcess() {
        System.out.println("支付已确认");
    }
}
//WechatPay.java
package com.Dinkben.pay;
//微信支付
public class WechatPay implements Pay {
    public void authorization() {
        System.out.println("请授予微信支付权限");
    }
    @Override
    public void generateBill() {        
        System.out.println("已生成账单");
    }
    @Override
    public void payProcess() {
        System.out.println("支付已确认");
    }
}
//SelectPay.java
package com.Dinkben.pay;
//选择哪一种支付方式
import java.util.Scanner;
public class SelectPay {
    public SelectPay() {
        System.out
                .println("Please enter you choise:Alipay,Unionpay or Wechatpay?");
        Scanner scanner = new Scanner(System.in);
        String string = scanner.next();
        switch (string) {
        case "Alipay":
            AliPay aliPay = new AliPay();
            aliPay.authorization();
            break;
        case "Unionpay":
            UnionPay unionPay=new UnionPay();
            unionPay.authorization();
            break;
        case "Wechatpay":
            WechatPay wechatPay=new WechatPay();
            wechatPay.authorization();
            break;
        default:
            break;
        }
    }
}
//PayOnline.java
package com.Dinkben.pay;
//在线支付,选择其中一种方式
public class PayOnline {
    public static void main(String[] args) {
        SelectPay selectPay=new SelectPay();
    }
}

结果:
目前只是实现简单的方法,具体流程没有实现

第二道 龟兔赛跑

    龟兔赛跑的故事大家都听过,请采用线程的知识,编写代码作比较。 
具体要求如下: 
1、乌龟和兔子各自一个线程。 
2、乌龟每步跑1厘米,兔子每步跳100厘米。 
3、兔子每跑到第100步的时候,会休息0.001秒; 
4、问:50000厘米比赛谁获胜?
//RabbitThread.java
package com.Dinkben.Thread;

public class RabbitThread extends Thread {
    int rab_step = 0;
    long startTime = System.currentTimeMillis();
    private String str;
    private int journey;
    public RabbitThread(int journey) {
        this.journey = journey;
    }
    @Override
    public void run() {
        for (int i = 0; i < journey; i++) { 
            journey = journey - 100;
            ++rab_step;
            if (rab_step % 100 == 0) {
                try {
                    Thread.sleep(1);
                } catch (InterruptedException ex) {
                }
            }
        }
        str = "兔子总用时(毫秒):" + (System.currentTimeMillis() - startTime);
        System.out.println(str);
    }
}
//TortoiseThread.java
package com.Dinkben.Thread;

public class TortoiseThread extends Thread{
    long startTime = System.currentTimeMillis();
    private String str;
    private int journey;
    public TortoiseThread(int journey) {
        this.journey = journey;
    }
    @Override
    public void run() {
        for (int i = 0; i <journey; i++) {      
        }
        str = "乌龟总用时(毫秒 ):"+(System.currentTimeMillis()-startTime) ;
        System.out.println(str);
    }
}
//ThreadTest.java
package com.Dinkben.Thread;
public class ThreadTest {
    public static void main(String[] args) {
        RabbitThread r=new RabbitThread(50000);
        TortoiseThread t=new TortoiseThread(50000);
        r.start();
        t.start();      
    }
}

結果:
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值