- 目录
- 总结
- 第一道 支付问题
- 第二道 龟兔赛跑
目录
总结
这段时间由于上夜班没有生物钟调整过来,在加上自己比较懒,所以就没有写博客,前两天去上课做了几道编程题,由于没有按时完成,后来剩下的一道也由于我较懒所以没写,因此就把我写的两道题写出来吧!
第一道 支付问题
利用面向对象的思想实现一套代码,要求一个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();
}
}
結果: