Java代码84pts求调
查看原帖
Java代码84pts求调
753280
10chen01楼主2024/7/11 12:24

RT

import java.util.HashMap;
import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        var inputer = new Scanner(System.in);
        var equation = inputer.nextLine();
        var ptr = 0;
        var equationLength = equation.length();
        var equationArray = equation.toCharArray();
        var leftConst = 0;
        var rightConst = 0;
        var leftUnknown = 0;
        var rightUnknown = 0;
        var negativeMode = false;
        var leftMode = true;
        var unknown = ' ';
        while (ptr < equationLength) {
            char ch = equationArray[ptr];
            if ('0' <= ch && ch <= '9') {
                int result = ch - '0';
                ptr += 1;
                if (ptr < equationLength) {
                    ch = equationArray[ptr];
                    while (ptr < equationLength &&
                            '0' <= equationArray[ptr] && equationArray[ptr] <= '9') {
                        ch = equationArray[ptr];
                        result *= 10;
                        result += ch - '0';
                        ptr++;
                    }
                }
                if (ptr < equationLength &&
                        'a' <= equationArray[ptr] && equationArray[ptr] <= 'z') {
                    unknown = equationArray[ptr];
                    if (leftMode) {
                        if (negativeMode) leftUnknown -= result;
                        else leftUnknown += result;
                    } else {
                        if (negativeMode) rightUnknown -= result;
                        else rightUnknown += result;
                    }
                    ptr++;
                } else {
                    if (leftMode) {
                        if (negativeMode) leftConst -= result;
                        else leftConst += result;
                    } else {
                        if (negativeMode) rightConst -= result;
                        else rightConst += result;
                    }
                }
            } else if (ch == '=') {
                leftMode = false;
                ptr++;
            } else if (ch == '+') {
                negativeMode = false;
                ptr++;
            } else if (ch == '-') {
                negativeMode = true;
                ptr++;
            } else if ('a' <= ch && ch <= 'z') {
                unknown = ch;
                if (leftMode) {
                    if (negativeMode) leftUnknown -= 1;
                    else leftUnknown += 1;
                } else {
                    if (negativeMode) rightUnknown -= 1;
                    else rightUnknown += 1;
                }
                ptr++;
            }
        }
        double ans = (double) (rightConst - leftConst) / (leftUnknown - rightUnknown);
        if (rightConst - leftConst == 0) System.out.printf("%c=0.000", unknown);
        else System.out.printf("%c=%.3f", unknown, ans);
    }
}
2024/7/11 12:24
加载中...