📄 window.java
字号:
case ')': {
while (opStack.top().operator != '(') {
bigintStack.push(operation(bigintStack.pop(),
bigintStack.pop(), opStack.pop()));
}
opStack.pop();
break;
}
case '+': {
if (opStack.elementCount == 0)
opStack.push(new Operator('+', 1));
else {
while (opStack.elementCount != 0
&& opStack.top().level >= 1) {
bigintStack.push(operation(bigintStack.pop(),
bigintStack.pop(), opStack.pop()));
}
opStack.push(new Operator('+', 1));
}
break;
}
case '-': {
if (i == 0 || s.charAt(i - 1) == '(')
bigintStack
.push(new BigINT(new StringBuffer("0"), true));
if (opStack.elementCount == 0)
opStack.push(new Operator('-', 1));
else {
while (opStack.elementCount != 0
&& opStack.top().level >= 1) {
bigintStack.push(operation(bigintStack.pop(),
bigintStack.pop(), opStack.pop()));
}
opStack.push(new Operator('-', 1));
}
break;
}
case '*': {
if (opStack.elementCount == 0)
opStack.push(new Operator('*', 2));
else {
while (opStack.elementCount != 0
&& opStack.top().level >= 2) {
bigintStack.push(operation(bigintStack.pop(),
bigintStack.pop(), opStack.pop()));
}
opStack.push(new Operator('*', 2));
}
break;
}
case '/': {
if (opStack.elementCount == 0)
opStack.push(new Operator('/', 2));
else {
while (opStack.elementCount != 0
&& opStack.top().level >= 2) {
bigintStack.push(operation(bigintStack.pop(),
bigintStack.pop(), opStack.pop()));
}
opStack.push(new Operator('/', 2));
}
break;
}
case '^': {
if (opStack.elementCount == 0)
opStack.push(new Operator('^', 3));
else {
while (opStack.elementCount != 0
&& opStack.top().level > 3) {
bigintStack.push(operation(bigintStack.pop(),
bigintStack.pop(), opStack.pop()));
}
opStack.push(new Operator('^', 3));
}
break;
}
}
}
}
while (opStack.elementCount != 0) {
bigintStack.push(operation(bigintStack.pop(), bigintStack.pop(),
opStack.pop()));
}
result = bigintStack.top();
System.out.println(result.toStringBuffer());
return result;
}
private int toINT(char c) {
int result = 0;
switch (c) {
case '1':
result = 1;
break;
case '2':
result = 2;
break;
case '3':
result = 3;
break;
case '4':
result = 4;
break;
case '5':
result = 5;
break;
case '6':
result = 6;
break;
case '7':
result = 7;
break;
case '8':
result = 8;
break;
case '9':
result = 9;
break;
}
return result;
}
private boolean isNumber(char c) {
boolean result = false;
switch (c) {
case '0': {
result = true;
break;
}
case '1': {
result = true;
break;
}
case '2': {
result = true;
break;
}
case '3': {
result = true;
break;
}
case '4': {
result = true;
break;
}
case '5': {
result = true;
break;
}
case '6': {
result = true;
break;
}
case '7': {
result = true;
break;
}
case '8': {
result = true;
break;
}
case '9': {
result = true;
break;
}
}
return result;
}
private boolean isOperator(char c) {
boolean result = false;
switch (c) {
case '+': {
result = true;
break;
}
case '-': {
result = true;
break;
}
case '*': {
result = true;
break;
}
case '/': {
result = true;
break;
}
case '^': {
result = true;
break;
}
case '(': {
result = true;
break;
}
case ')': {
result = true;
break;
}
}
return result;
}
private BigINT operation(BigINT b1, BigINT b2, Operator op) {
BigINT result = new BigINT(new StringBuffer("0"), true);
switch (op.operator) {
case '+': {
result = b2.addition(b1);
break;
}
case '-': {
result = b2.subtration(b1);
break;
}
case '*': {
result = b2.multiplication(b1);
break;
}
case '/': {
result = b2.division(b1);
break;
}
case '^': {
result = b2.power(b1);
break;
}
}
return result;
}
public boolean isCorrect(StringBuffer s) {
boolean result = true;
int n = 0;
int kuohao = 0;
int nofFalse = 0;
for (int i = 0; i < s.length(); i++) {
if (!(isOperator(s.charAt(i)) || isNumber(s.charAt(i)))) {
return false;
}
}
for (int i = 0; i < s.length(); i++)
if (isOperator(s.charAt(i)))
nofFalse++;
boolean input[] = new boolean[nofFalse * 2 + 1];
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '-') {
if (i == 0 || s.charAt(i - 1) == '(')
s.delete(i, i + 1);
}
}
for (int i = 0; i < s.length(); i++) {
if (isNumber(s.charAt(i))) {
int v1 = i;
int v2 = s.length();
for (int j = i; j < s.length(); j++) {
if (!isNumber(s.charAt(j))) {
v2 = j;
if (j == s.length() - 1)
v2 = j + 1;
break;
}
}
i = v2 - 1;
n++;
input[n - 1] = true;
}
if (s.charAt(i) == '+' || s.charAt(i) == '-' || s.charAt(i) == '*'
|| s.charAt(i) == '/' || s.charAt(i) == '^') {
n++;
input[n] = false;
}
if (s.charAt(i) == '(')
if (i == 0 || isOperator(s.charAt(i - 1)))
kuohao++;
else {
result = false;
break;
}
if (s.charAt(i) == ')')
if (i == s.length() - 1 || isOperator(s.charAt(i + 1)))
kuohao--;
else {
result = false;
break;
}
if (kuohao < 0)
return false;
}
boolean b = true;
if (kuohao != 0)
return false;
for (int i = 0; i < n; i++) {
if (input[i] == b)
b = !b;
else {
result = false;
break;
}
}
return result;
}
public void openfile() {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
choosen = fileChooser.showOpenDialog(this);
if (choosen != JFileChooser.CANCEL_OPTION) {
file = fileChooser.getSelectedFile();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -