3个类,开始
1,
/
自定义异常类
/
public class MyException extends Exception {
//验证交易类型正确性
public void TransactionsInfo(){
Systemoutprintln("交易失败,只能输入0或者1");
}
//验证金额正确性
public void amountInfo(){
Systemoutprintln("交易失败,输入金额不能为负数或者字符");
}
}
2,
public class User {
/
用户信息类
/
private String name; //用户名
private float amount; //用户金额
public User(String name,float amount){
thisname = name;
thisamount = amount;
}
public float getAmount() {
return amount;
}
public void setAmount(float amount) {
thisamount = amount;
}
public String getName() {
return name;
}
public void setName(String name) {
thisname = name;
}
// 交易的方法,需要接受两个参数,一个是代表交易方式(取款,或者存款,),一个代表交易金额
public User Transactions() throws MyException{
Systemoutprintln("请输入您的交易方式0代表存款,1代表取款");//提示用户交易方式
BufferedReader br1=new BufferedReader(new InputStreamReader(Systemin));
BufferedReader br2=new BufferedReader(new InputStreamReader(Systemin));
String flag = null;
try {
flag = br1readLine();
} catch (IOException e) {
eprintStackTrace();
}
if("0"equals(flag)){
}else if("1"equals(flag)){
amount=-amount;//因为1代表取款,所以变成负数
}else{
new MyException()TransactionsInfo(); //打印类型错误
return this;
}
String amountString = null;
try {
amountString = br2readLine();
} catch (IOException e) {
eprintStackTrace();
}
float amount = 00f;
try{
amount = FloatparseFloat(amountString);
}catch(Exception ex){
throw new MyException();
}
thisamount = thisamount+amount;//交易
return this; //返回用户信息
}
}
3,
public class MoneyTest {
/
测试类
@param args
/
public static void main(String[] args){
User user = new User("张三",1234f); //测试用户
Systemoutprintln("用户"+usergetName()+"交易前的金额为:"+usergetAmount());
try {
userTransactions();
} catch (MyException e) {
// TODO Auto-generated catch block
eamountInfo();
}//调用方法
Systemoutprintln("交易后的金额为"+usergetAmount());
}
}
public double withdrawl(double amt) throws InsufficientFundsException {
if(amt > total) {
throw new InsufficientFundsException();
}
return total - amt;
}
public void process(boolean save, double amt) {
if(save) {
// save money
} else {
try{
double left = withdrawl(amt);
} catch(InsufficientFundsException e) {
// Handle Exception
}
}
}
public class MyException extends RuntimeException {
private static final long serialVersionUID = 1L;
public MyException() {
}
public MyException(String msg) {
super(msg);
}
public MyException(String msg, Exception ex) {
super(msg, ex);
}
}
----------------------------------------------
假如 yhk余额 为 float balance ; 取的钱为 float expenditure;
if(balance < 10 || expenditure > 5000) { //当然你可以分成2个异常来抛
throw new DBException("余额不能低于10元 或者 单次取钱金额不能大于5000");
}
很简单的例子,我把代码贴出来吧
import javautilScanner;
public class ATM {
/
@param args
/
public static void main(String[] args) {
Scanner in = null;
int result;
double drawMoney;
double depositMoney;
Account account = new Account();
while (true) {
Systemoutprintln("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆(ABC)中国农业银行ATM自动存取款机☆☆☆☆☆☆☆☆☆☆☆☆☆");
Systemoutprintln("\n\t\t\t\t1存款业务");
Systemoutprintln("\n\t\t\t\t2取款业务");
Systemoutprintln("\n\t\t\t\t3查询余额");
Systemoutprintln("\n\t\t\t\t4退出ATM系统");
Systemoutprintln("\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆中国农业银行欢迎您的使用☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
in = new Scanner(Systemin);
switch (innextInt()) {
case 1:
Systemoutprintln("请输入您的存款数额!");
depositMoney = innextDouble();
if(depositMoney < 0)
Systemoutprintln("您的输入无效,请重新输入!");
result = accountdeposit(depositMoney);
if(result == 0){
Systemoutprintln("存款业务完成,是否显示余额?Y/N");
if("Y"equalsIgnoreCase(innext())){
Systemoutprintln("您当前的余额为:"+accountcheckCurrent());
}else {
break;
}
}else {
Systemoutprintln("无法完成交易!");
break;
}
break;
case 2:
Systemoutprintln("请输入您的取款数额!");
drawMoney = innextDouble();
if (drawMoney < 0) {
Systemoutprintln("您的输入无效,请重新输入!");
}
result = accountwithDraw(drawMoney);
if (result == 0) {
Systemoutprintln("存款业务完成,是否显示余额?Y/N");
if("Y"equalsIgnoreCase(innext())){
Systemoutprintln("您当前的余额为:"+accountcheckCurrent());
}else {
break;
}
} else {
Systemoutprintln("无法完成交易!");
break;
}
case 3:
Systemoutprintln("您当前的余额为:"+accountcheckCurrent());
break;
case 4:
break;
default:
break;
}
}
}
}
public class Account {
private double currentMoney;//当前余额
public double getCurrentMoney() {
return currentMoney;
}
public void setCurrentMoney(double currentMoney) {
if (currentMoney > 0) {
thiscurrentMoney = currentMoney;
}
}
/
取款业务
@param drawMoney
@return 0代表成功,1代表失败
/
public int withDraw(double drawMoney) {
if (currentMoney > 0 && drawMoney <= currentMoney) {
currentMoney -= drawMoney;
} else {
Systemoutprintln("您的余额已不足!");
return 1;
}
return 0;
}
/
存款业务
@param depositMoney
@return 0代表成功,1代表失败
/
public int deposit(double depositMoney) {
if (depositMoney > 0) {
currentMoney += depositMoney;
return 0;
}else {
Systemoutprintln("您提交的存款为负数,无法完成存款交易");
return -1;
}
}
/
查询余额业务
@return
/
public double checkCurrent() {
return currentMoney;
}
}
先不说你这程序的问题,,我说说我分析你的题目(个人意见)
JAVA我要创建一个帐号类,有3个方法,分别是存钱取钱还有查询金额
帐号就是一个对象
该对象有三个属性 (卡号:id,余额:money);
有三个行为: 存钱,取钱,查询
那么初始架构就是
public class IDmoney {
private String id; //卡号
private String money; //余额
//些处为属性的get,set方法
public boolean inMoney(saveMoney){ //存钱
//方法体
}
public boolean outMoney(saveMoney){ //取钱
//方法体
}
public double selectMoney(saveMoney){ //查询
//方法体
}
}
大致就是这样,至于方法里面的处理,得看你自己业务了然后如果想自定义异常的话,你得去看看怎么自定义,和使用
现在语言都是面向对象,所以在实际开发当中,尽量向对象看
以上就是关于JAVA高手来,题目是:自定义异常类,实现银行的存钱和取钱业务全部的内容,包括:JAVA高手来,题目是:自定义异常类,实现银行的存钱和取钱业务、java编程模拟实现yhk储户存钱取钱,一卡通,xyk取钱,pos机刷卡消费等服务、编写一个java程序异常,来控制yhk中每次取钱的金额不能大于5000元,并且卡上的余额不能小于1等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)