Discuss / Java / 第一题

第一题

Topic source

Lumen.

#1 Created at ... [Delete] [Delete and Lock User]

    static String toHex(int n) {

        Deque<Integer> stack = new LinkedList<>();

        int i;

        String hex="";

        while(n!=0){

            i = n%16;

            n = n/16;

            stack.push(i);

        }

        for(int j :stack){

            switch(j){

                case 10:hex+='A';break;

                case 11:hex+='B';break;

                case 12:hex+='C';break;

                case 13:hex+='D';break;

                case 14:hex+='E';break;

                case 15:hex+='F';break;

                default:hex+=j;break;

            }

        }

        return hex;

    }

Lumen.

#2 Created at ... [Delete] [Delete and Lock User]

第二题。。。

import java.util.*;

public class Main {

    public static void main(String[] args) {

        String exp = "1 + 9 * (9 - 5)";

        SuffixExpression se = compile(exp);

        int result = se.execute();

        System.out.println(exp + " = " + result + " " + (result == 1 + 9 * (9 - 5) ? "Yes" : "No"));

    }

    static SuffixExpression compile(String exp) {

        Deque<Character> stack = new LinkedList<>();

        Deque<Character> stack2 = new LinkedList<>();

        char[] arr = exp.toCharArray();

        for(char c : arr){

            if( c >= 48 && c <= 57 ){

                stack2.push(c);

            };

        }

        for(char c : arr){

            if( c == '+' || c == '-' || c == '*' || c == '/' ){

                stack.push(c);

            };

        }

        return new SuffixExpression(stack2,stack);

    }

}

class SuffixExpression {

    Deque<Character> NumberStack = new LinkedList<>();

    Deque<Character> CharStack = new LinkedList<>();

    public SuffixExpression(Deque<Character> NumberStack,Deque<Character> CharStack){

        this.NumberStack = NumberStack;

        this.CharStack = CharStack;

        System.out.println(NumberStack);

    }

    int execute() {

        while(NumberStack.size() >= 2 && CharStack.size() > 0){

            int i = NumberStack.pop();

            int j = NumberStack.pop();

            int k= CharStack.pop();

            int temp=0;

            switch(k){

                case 43:temp = (j-'0')+(i-'0');break;

                case 45:temp = (j-'0')-(i-'0');break;

                case 42:temp = (j-'0')*(i-'0');break;

                case 47:temp = (j-'0')/(i-'0');break;

            }

            NumberStack.push((char)(temp+'0'));

        }

        return NumberStack.pop()-'0';

    }

}


  • 1

Reply