「java存款题」java案例银行存取款
本篇文章给大家谈谈java存款题,以及java案例银行存取款对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
用java线程同步实现银行取款和存款。
你的代码问题很多!
帮你修改后:
class Account {
private static float Balance = 200f;//线程共享的钱
public synchronized static void deposit(float amt) {
Balance = Balance + amt;
try {
Thread.sleep(10);// 模拟其它处理所需要的时间,比如刷新数据库等
}
catch (InterruptedException e) {
}
}
public static float getBalance() {
return Balance;
}
public static void setBalance(float balance) {
Balance = balance;
}
public synchronized static void withdraw(float bmt) {
Balance -= bmt;
try {
Thread.sleep(10);// 模拟其它处理所需要的时间,比如刷新数据库等
}
catch (InterruptedException e) {
}
}
String name;
public Account(String name) {
this.name = name;
}
}
public class AccountTest {
public static void main(String[] args) {
Customer customerA = new Customer("A");
Customer customerB = new Customer("B");
customerA.start();
customerB.start();
System.out.println();
try {
customerA.join();//等待A线程执行完毕
customerB.join();//等待B线程执行完毕
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("最后总钱数:" + Account.getBalance());
}
}
class Customer extends Thread {
public Customer(String string) {
super(string);
}
@Override
public void run() {
System.out.println(currentThread().getName());
if (currentThread().getName().equals("A"))
Account.deposit(100.0f);//A线程加100
else if (currentThread().getName().equals("B"))
Account.withdraw(50.0f);//B线程减50
}
}
如何用Java线程实现银行的存款取款问题最好能写出编出的具体程序
AccountTest.java class BankAccount //定义银行账户类BankAccount{private static int amount =2000; //账户余额最初为2000public void despoit(int m) //定义存款的方法{amount=amount+m;System.out.println("晓明存入["+m+"元]");}public void withdraw(int m) //定义取款的方法{amount=amount-m;System.out.println("张新取走["+m+"元]");if(amount0)System.out.println("***余额不足!***);public int balance() //定义得到账户余额的方法{return amount;}}classicCustomerextendsThread {String name;BankAccount bs; //定义一个具体的账户对象public Customer(BankAccount b,String s){name=s;bs=b;}public static void cus(String name,BankAccount bs) //具体的账户操作方法{if(name.equals("小明")) //判断用户是不是小明{try{for(int i=0;i6;i++) //用户晓明则向银行存款6次,每次1000元 {Thread.currentThread().sleep((int)(Math.random()*300));bs.despoit(1000);}}catch(InterruptedException e){}}else{try{for(int i=0;i6;i++) //用户不是小明则从银行取款6次,每次1000元{Thread.currentThread().sleep((int)(Math.random()*300));bs.withdraw(1000); }}catch(InterruptedException e){} }}public void run() //定义run方法}cus(name,bs); }}public classAccountTest{public static void main(String [] args) throws InterruptedException{BankAccount bs=new BankAccount();Customer customer1=new Customer(bs,"小明");Customer customer2=new Customer(bs,"张新");Thread t1=new Thread(customer1);Thread t2=new Thread(customer2);t1.Start();t2.start();Thread.currentThread().sleep(500);}}
JAVA高手来,题目是:自定义异常类,实现银行的存钱和取钱业务
3个类,开始...
1,
/**
*
* 自定义异常类
*
*/
public class MyException extends Exception {
//验证交易类型正确性
public void TransactionsInfo(){
System.out.println("交易失败,只能输入0或者1");
}
//验证金额正确性
public void amountInfo(){
System.out.println("交易失败,输入金额不能为负数或者字符");
}
}
2,
public class User {
/**
* 用户信息类
*/
private String name; //用户名
private float amount; //用户金额
public User(String name,float amount){
this.name = name;
this.amount = amount;
}
public float getAmount() {
return amount;
}
public void setAmount(float amount) {
this.amount = amount;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 交易的方法,需要接受两个参数,一个是代表交易方式(取款,或者存款,),一个代表交易金额
public User Transactions() throws MyException{
System.out.println("请输入您的交易方式.0代表存款,1代表取款");//提示用户交易方式
BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
BufferedReader br2=new BufferedReader(new InputStreamReader(System.in));
String flag = null;
try {
flag = br1.readLine();
} catch (IOException e) {
e.printStackTrace();
}
if("0".equals(flag)){
}else if("1".equals(flag)){
amount=-amount;//因为1代表取款,所以变成负数
}else{
new MyException().TransactionsInfo(); //打印类型错误
return this;
}
String amountString = null;
try {
amountString = br2.readLine();
} catch (IOException e) {
e.printStackTrace();
}
float amount = 0.0f;
try{
amount = Float.parseFloat(amountString);
}catch(Exception ex){
throw new MyException();
}
this.amount = this.amount+amount;//交易
return this; //返回用户信息
}
}
3,
public class MoneyTest {
/**
* 测试类
* @param args
*/
public static void main(String[] args){
User user = new User("张三",123.4f); //测试用户
System.out.println("用户"+user.getName()+"交易前的金额为:"+user.getAmount());
try {
user.Transactions();
} catch (MyException e) {
// TODO Auto-generated catch block
e.amountInfo();
}//调用方法
System.out.println("交易后的金额为"+user.getAmount());
}
}
java存款题的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java案例银行存取款、java存款题的信息别忘了在本站进行查找喔。