import java.util.Scanner;
class xinxi{
String id;
String gid="admin";
int pwd;
int gmoney;
void load()
{
Scanner in =new Scanner(System.in);
System.out.println("账号");
id=in.next();
System.out.println("密码");
pwd=in.nextInt();
if(id.equals(gid)&&pwd==123456)
{
service();
}
else
{
System.out.println("错误");
load();
}
}
void service()
{
int choice;
System.out.println("选择服务 ");
System.out.println("1.存款与取款\n2.查询金额\n3.转账\n4.修改密码\n5.退出");
Scanner in =new Scanner(System.in);
choice=in.nextInt();
if(choice==1)
{
service1();
}
else if(choice==2)
{
System.out.println("账户余额为:"+gmoney);
service();
}
else if(choice==3)
{
service3();
}
else if(choice==4)
{
sevice4();
}
else if(choice==5)
{
System.out.println("谢谢使用本ATM机!");
load();
}
else
{
System.out.println("错误");
}
}
void sevice4()
{
System.out.println("请设置一个密码:");
Scanner in = new Scanner(System.in);
String pass = in.next();
System.out.println("重复管理员密码:");
in = new Scanner(System.in);
String pass1 = in.next();
if (pass.equals(pass1)) {
System.out.println("已生效,请牢记密码:" + pass);
service();
}
else {
System.out.println("两次密码不一致,请重新设置。");
sevice4();
}
}
void service3()
{
int Transfer;
System.out.println("转账");
System.out.println("输入转出金额");
Scanner in =new Scanner(System.in);
Transfer=in.nextInt();
if(Transfer>0) {
if(Transfer<=gmoney){
gmoney=gmoney-Transfer;
System.out.println("转账成功!余额为;"+gmoney);
}
else {
System.out.println("余额不足");
service();
}
}
else {
System.out.println("输入正确金额");
service3();
}
service();
}
void service1()
{
int choice1;
System.out.println("存款请输入1,取款请输入2");
Scanner in =new Scanner(System.in);
choice1=in.nextInt();
if(choice1==1)
{
deposit();
}
else if(choice1==2)
{
Withdrawal();
}
else
{
System.out.println("错误选择,正在跳转主界面");
service();
}
}
void deposit()
{
int money;
System.out.println("请输入存款金额");
Scanner in =new Scanner(System.in);
money=in.nextInt();
if(money%100==0)
{
System.out.println("正在存款中,请把人民币放入放钞口");
gmoney=gmoney+money;
System.out.println("账户金额为:"+gmoney);
service();
}
else
{
System.out.println("金额输入错误,请重新输入");
deposit();
}
}
void Withdrawal()
{
int money;
System.out.println("请输入取款金额");
Scanner in =new Scanner(System.in);
money=in.nextInt();
if(money%100==0)
{
System.out.println("正在取款中,请注意取钞口");
gmoney=gmoney-money;
System.out.println("账户金额为:"+gmoney);
service();
}
else
{
System.out.println("金额输入错误,请重新输入");
Withdrawal();
}
}
}
public class jdk {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in =new Scanner(System.in);
xinxi message1=new xinxi();
message1.load();
}
}
第一题:
bank类:
public class Bank {
static String bankName;//定义变量银行名字
private String name;//储户姓名
private String password;//密码
private double balance;//账户余额
private double turnover;//交易额
//静态方法,打出银行的欢迎的语句
public static void welcome(){
System.out.println("---------欢迎来到"+bankName+"--------");
}
//网上银行界面
public void BankWelcome(){
System.out.println("---------1、取款----------------");
System.out.println("---------2、存款----------------");
System.out.println("---------3、查看当前余款----------");
System.out.println("---------4、修改账户密码----------");
System.out.println("---------5、退出系统-------------");
}
//生成带参构造方法
public Bank(String name, String password, double turnover) {
this.name = name;
this.password = password;
this.balance = turnover;
System.out.println("开户成功!账户余额:"+turnover);
}
//存款功能
public void deposit(double turnover){
balance=balance+turnover;
System.out.println(name+"你好!你的账户已经存入"+turnover+"元"
+"当前余额:"+balance+"元");
}
//查看余额功能
public void LookBalance(){
System.out.println(name+"你好!你当前余额为:"+balance+"元");
}
//判断输入密码是否正确
public void PasswordJudge(String password){
if(!this.password.equals(password)){
System.out.println("你输出的密码错误!");
return;
}
else{
BankWelcome();
}
}
//取款功能
public void withdrawal(double turnover)
{
if(turnover<=5000)
{
if (turnover % 100 == 0)
{
//判断余额是否充足
if (balance - turnover > 0) {
balance = balance - turnover;
System.out.println("你好,你的账户已取出" + turnover + "元,当前余额:" + balance);
} else {
System.out.println("对不起,账户余额不足!");
}
}else{
System.out.println("取款金额必须为100整");
}
}
else{
System.out.println("单笔交易金额不能超过5000!");
}
}
//修改密码
public boolean change(String new_password){
int a=111111;
int b=Integer.parseInt(new_password);
for(int i=1;i<10;i++) {
a = a * i;
if(a==b){
System.out.println("密码6位数相同,安全性较低,请重新输入:");
return false;
}else{continue;}
}
this.password = new_password;
return true;
}
//静态方法,打印出银行欢迎下次欢迎
static void welcomeNext(){
System.out.println("请携带好随身财务,欢迎下次光临"+bankName);
}
}
trade类:也就是主函数
import java.util.Scanner;//输入流导包
public class Trade {
public static void main(String[] args) {
//定义一家银行,给静态变量(银行名字)赋值,类名,调用成员变量
Bank.bankName="工商银行";
//银行打印欢迎光临语句,调用静态方法
Bank.welcome();
//开户操作
Bank bank=new Bank("小明","123456",10000);
//输入密码操作
System.out.println("请输入密码:");
Scanner sc3=new Scanner(System.in);
String pw=sc3.next();
bank.PasswordJudge(pw);//执行判断是否密码正确
Scanner sc=new Scanner(System.in);
int result=1;
for(;;) {
System.out.println("请输入你的选择:");
int i = sc.nextInt();
switch (i) {
case 1:
System.out.println("请输入交易额:");
Scanner sc1 = new Scanner(System.in);
int a = sc1.nextInt();
bank.withdrawal(a);
break;
case 2:
System.out.println("请输入交易额:");
Scanner sc4 = new Scanner(System.in);
int b = sc4.nextInt();
bank.deposit(b);
break;
case 3:
bank.LookBalance();
break;
case 4:
System.out.println("请输入新的密码:");
Scanner sc5 = new Scanner(System.in);
String new_password = sc5.nextLine();
for (;; ) {
if (bank.change(new_password)) {
System.out.println("修改成功!");
break;
} else {
new_password = sc5.nextLine();
}
}
break;
case 5:
result=0;
}
if(result==0){
System.out.println("退出成功!记得取卡!");
break;
}
}
}
}
第二题:
import java.util.ArrayList;
import java.util.Scanner;
import java.util.List;
import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class dome {
public static void main(String[] args) {
System.out.println("请输入表达式:");
Scanner sc = new Scanner(System.in);
String s = sc.next();
//System.out.println(s.substring(1));
System.out.println("结果是:");
calculate(s);
}
//负数的问题
public static int calculate(String strExpression)
{
String s = simplify(strExpression);
//System.out.println("s : "+s);
String numStr = "";//记录数字
Stack<Character> opeStack = new Stack<>();//符号站
int l = s.length();//字符串长度 l
List<String> list = new ArrayList<>();
for(int i=0;i<l;i++)
{
char ch = s.charAt(i);
if(isAllOpe(ch))
{
if(numStr!="")
{
list.add(numStr);
numStr="";
}
if(ch=='(')
{
opeStack.push(ch);
}
else if(isOpe(ch))
{
char top = opeStack.peek();
if(isGreater(ch, top))
// ch优先级大于top 压栈
{
opeStack.push(ch);
}
else
//否则,将栈内元素出栈,直到遇见 '(' 然后将ch压栈
{
while(true)
//必须先判断一下 后出栈 否则会有空栈异常
{
char t=opeStack.peek();
if(t=='(')
break;
if(isGreater(ch, t))
break;
list.add(Character.toString(t));
t=opeStack.pop();
}
opeStack.push(ch);
}
}
else if(ch==')')
{
char t = opeStack.pop();
while(t!='('&&!opeStack.isEmpty())
{
list.add(Character.toString(t));
t = opeStack.pop();
}
}
}
else//处理数字
{
numStr+=ch;
}
}
//计算后缀表达式
//System.out.println(list.toString());
Stack<Integer> num = new Stack<>();
int size = list.size();
for(int i=0;i<size;i++)
{
String t =list.get(i);
if(isNumeric(t))
{//将t转换成int 方便计算
num.push(Integer.parseInt(t));
}
else
{
//如果t为运算符则 只有一位
char c = t.charAt(0);
int b = num.pop();
//如果有 算式是类似于 -8-8 这样的需要判断一下栈是否为空
int a = num.pop();
switch(c)
{
case '+':
num.push(a+b);
break;
case '-':
num.push(a-b);
break;
case '*':
num.push(a*b);
break;
case '/':
num.push(a/b);
break;
default:
break;
}
}
}
System.out.println(num.pop());
return 0;
}
/**化简表达式
* 将表达式中的 {}[]替换为()
* 负数的处理
* 为了方便将中缀转换为后缀在字符串前后分别加上(,) eg:"1+1" 变为"(1+1)"
* @param str 输入的字符串
* @return s 返回简化完的表达式
*/
public static String simplify(String str)
{
//负数的处理
// 处理负数,这里在-前面的位置加入一个0,如-4变为0-4,
// 细节:注意-开头的地方前面一定不能是数字或者反括号,如9-0,(3-4)-5,这里地方是不能加0的
// 它的后面可以是数字或者正括号,如-9=>0-9, -(3*3)=>0-(3*3)
String s = str.replaceAll("(?<![0-9)}\\]])(?=-[0-9({\\[])", "0");
//将表达式中的 {}[]替换为()
s = s.replace('[', '(');
s = s.replace('{', '(');
s = s.replace(']', ')');
s = s.replace(']', ')');
//为了方便将中缀转换为后缀在字符串前后分别加上(,)
s="("+s+")";
return s ;
}
/**判断字符c是否为合理的运算符
*
* @param c
* @return
*/
public static boolean isOpe(char c)
{
if(c=='+'||c=='-'||c=='*'||c=='/')
return true;
else
return false;
}
public static boolean isAllOpe(char c)
{
if(c=='+'||c=='-'||c=='*'||c=='/')
return true;
else if(c=='('||c==')')
return true;
else
return false;
}
/**
* 比较字符等级a是否大于b
* @param a
* @param b
* @return 大于返回true 小于等于返回false
*/
public static boolean isGreater(char a,char b)
{
int a1 = getLevel(a);
int b1 = getLevel(b);
if(a1>b1)
return true;
else
return false;
}
/**
* 得到一个字符的优先级
* @param a
* @return
*/
public static int getLevel(char a)
{
if(a=='+')
return 0;
else if(a=='-')
return 1;
else if(a=='*')
return 3;
else if(a=='/')
return 4;
else
return -1;
}
//判断是不是数字
public static boolean isNumeric(String str){
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(str);
if( !isNum.matches() ){
return false;
}
return true;
}
}
第一题答案,看看是不是你想要的效果