简单的Java问题 有偿解题,需要代码,价格好商量!

img


简单的Java问题,手机13430083895
有偿解题,需要代码,价格好商量!


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;
    }
}


第一题答案,看看是不是你想要的效果

img