📄 analyze.java
字号:
/*
* Created on 2006-9-10
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package calculator;
import java.util.LinkedList;
import java.util.ListIterator;
import java.util.StringTokenizer;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class Analyze {
public static Analyze analyze;
String inf, bufferNumber = null;
LinkedList list = new LinkedList();
ListIterator iter;
public Analyze(String str) {
inf = str;
}
public boolean statrtParse() {
StringBuffer makeContent = new StringBuffer();
StringTokenizer strToken = new StringTokenizer(inf);
while (strToken.hasMoreTokens()) {
makeContent.append(strToken.nextToken());
}
if(makeContent.length()==0) {
return false;
}
char infChar[] = makeContent.toString().toCharArray();
int length = infChar.length;
for (int j = 0; j < length; j++) {
if(!check(infChar[j])) {
return false;
}
}
if(bufferNumber != null) {
double dou = 0;
try{
dou = Double.parseDouble(bufferNumber);
} catch(Exception e) {
return false;
}
bufferNumber = null;
Formula f = new Formula(dou);
list.add(f);
}
list.addLast(new Operator('+'));
list.addLast(new Formula(0));
list.addLast(new Bracket(')'));
iter = list.listIterator();
return true;
}
boolean check(char ch) {
switch (ch) {
case '.':
if (bufferNumber == null) {
return false;
}
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
if(bufferNumber != null) {
bufferNumber = bufferNumber + ch;
} else bufferNumber = "" + ch;
return true;
case '+':
case '-':
case '×':
case '*':
case '/':
case '÷':
if(bufferNumber != null) {
double dou = 0;
try{
dou = Double.parseDouble(bufferNumber);
} catch(Exception e) {
findBug();
}
bufferNumber = null;
Formula f = new Formula(dou);
list.add(f);
}
Operator oper = new Operator(ch);
list.add(oper);
return true;
case '(':
case ')':
case '(':
case ')':
if(bufferNumber != null) {
double dou = 0;
try{
dou = Double.parseDouble(bufferNumber);
} catch(Exception e) {
findBug();
}
bufferNumber = null;
Formula f = new Formula(dou);
list.add(f);
}
list.add(new Bracket(ch));
return true;
}
return false;
}
private void findBug() {}
public Object nextElement() {
Object obj = iter.next();
return obj;
}
public Object previousElement() {
Object obj = iter.previous();
return obj;
}
public boolean hasNext() {
return iter.hasNext();
}
public String toString() {
String str = "";
while( hasNext()) {
Object obj = nextElement();
str = str + obj.toString();
}
return str;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -