⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculator.java

📁 简单的界面
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
text.setText(text.getText()+"4"); 
clear=true; 
} 

if(temp==num5) 
{ 
if(clear==false) 
text.setText(""); 
text.setText(text.getText()+"5"); 
clear=true; 
} 

if(temp==num6) 
{ 
if(clear==false) 
text.setText(""); 
text.setText(text.getText()+"6"); 
clear=true; 
} 
if(temp==num7) 
{ 
if(clear==false) 
text.setText(""); 
text.setText(text.getText()+"7"); 
clear=true; 
} 

if(temp==num8) 
{ 
if(clear==false) 
text.setText(""); 
text.setText(text.getText()+"8"); 
clear=true; 
} 

if(temp==num9) 
{ 
if(clear==false) 
text.setText(""); 
text.setText(text.getText()+"9"); 
clear=true; 
} 
if(temp==aa) 
{ 
text.setText(text.getText()+"A"); 
} 
if(temp==bb) 
{ 
text.setText(text.getText()+"B"); 
} 

if(temp==cc) 
{ 
text.setText(text.getText()+"C"); 
} 

if(temp==dd) 
{ 
text.setText(text.getText()+"D"); 
} 

if(temp==ee) 
{ 
text.setText(text.getText()+"E"); 
} 
if(temp==ff) 
{ 
text.setText(text.getText()+"F"); 
} 
if(temp==dian) 
{ 
clickable=true; 
for (int i = 0; i < text.getText().length(); i++) 
if ('.' == text.getText().charAt(i)) 
{ 
clickable=false; 
break; 
} //第一层判断是否里面含有小数点; 

if(clickable==true)//第二层判断 
text.setText(text.getText()+"."); 

} 

try 
{ 
if(temp==jia) 
{//加法 
qian=Double.parseDouble(text.getText()); 
fuhao="+"; 
clear=false; 
} 
if(temp==jian) 
{ 
qian=Double.parseDouble(text.getText()); 
fuhao="-"; 
clear=false; 
; 

} 
if(temp==cheng) 
{ 
qian=Double.parseDouble(text.getText()); 
fuhao="*"; 
clear=false; 

} 
if(temp==chu) 
{ 
qian=Double.parseDouble(text.getText()); 
fuhao="/"; 
clear=false; 

} 
if(temp==deng) 
{ 
double ss=Double.parseDouble(text.getText()); 
text.setText(""); 
if(fuhao=="+") 
text.setText(qian+ss+""); 
if(fuhao=="-") 
text.setText(qian-ss+""); 
if(fuhao=="*") 
text.setText(qian*ss+""); 
if(fuhao=="/") 
text.setText(qian/ss+""); 
clear=false;//要清空前一次的数据 
 

} 

if(temp==kai) 
{ 
String s = text.getText(); 
if (s.charAt(0) == '-') 
{ 
text.setText("负数不能开根号"); 
} 
else 
text.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(text.getText())))); 
clear=false; 
} 

if(temp==diao) 
{ 

if (text.getText().charAt(0) == '0'&&text.getText().length() == 1) 
{ 
text.setText("除数不能为零"); 
} 
else 
{ 
boolean isDec = true; 
int i, j, k; 
String s = Double.toString(1 / Double.parseDouble(text.getText())); 
for (i = 0; i < s.length(); i++) 
if (s.charAt(i) == '.') 
break; 
for (j = i + 1; j < s.length(); j++) 
if (s.charAt(j) != '0') 
{ 
isDec = false; 
break; 
} 
if (isDec == true) 
{ 
String stemp = ""; 
for (k = 0; k < i; k++) 
stemp += s.charAt(k); 
text.setText(stemp); 
} 
else 
text.setText(s); 
} 

clear=false; 
} 
if(temp==qiuyi) 
{ 
text.setText("0"); 
clear=false; 
} 
if (temp == fu) 
{ //导师,此方法参考书中例子 
boolean isNumber = true; 
String s = text.getText(); 
for (int i = 0; i < s.length(); i++) 
if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' || 
s.charAt(i) == '-')) 
{ 
isNumber = false; 
break; 
} 
if (isNumber == true) 
{ 
//如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉 
if (s.charAt(0) == '-') 
{ 
text.setText(""); 
for (int i = 1; i < s.length(); i++) 
{ 
char a = s.charAt(i); 
text.setText(text.getText() + a); 
} 
} 
//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处 
else 
text.setText('-' + s); 
} 
} 

} 
catch(Exception eeeee) 
{ 
System.out.println("运算时,首先输入数字或字符"); 
text.setText("运算出错"); 
clear=false; 
} 



} 




class objConversion 
{//导师,本进制类参考了CSMD类转换例子 

public void objConversion () 
{ 
} 

public String decDec (int decNum) 
{//10 

String strDecNum = Integer.toString(decNum); 

for (int i = strDecNum.length(); i < 3; i++) 
{ 
strDecNum = "0" + strDecNum; 
} 

// return strDecNum; 
return invert (strDecNum, 5); 

} 

public String decHex (int decNum) 
{//10 to 16 

String strHexNum = ""; 
int currentNum = 0; 

while (decNum != 0) 
{ 

if (decNum > 15) 
{ 

currentNum = decNum % 16; 
decNum /= 16; 

} 
else 
{ 

currentNum = decNum; 
decNum = 0; 

} 

switch (currentNum) 
{ 

case 15: strHexNum += "F"; 
break; 
case 14: strHexNum += "E"; 
break; 
case 13: strHexNum += "D"; 
break; 
case 12: strHexNum += "C"; 
break; 
case 11: strHexNum += "B"; 
break; 
case 10: strHexNum += "A"; 
break; 
default: strHexNum += Integer.toString(currentNum); 
break; 

} 

} 

return invert (strHexNum, 2); 

} 

public String decOct (int decNum) 
{//10 to 8 

String strOctNum = ""; 

while (decNum != 0) 
{ 

if (decNum > 7) 
{ 

strOctNum += Integer.toString(decNum % 8); 
decNum /= 8; 

} 
else 
{ 

strOctNum += Integer.toString(decNum); 
decNum = 0; 

} 

} 

return invert (strOctNum, 3); 

} 

public String decBin (int decNum) 
{//10 to 2 

String strBinNum = ""; 

while (decNum != 0) 
{ 

if (decNum > 1) 
{ 

strBinNum += Integer.toString(decNum % 2); 
decNum /= 2; 

} 
else 
{ 

strBinNum += Integer.toString(decNum); 
decNum = 0; 

} 

} 

return invert (strBinNum, 8); 

} 

private String invert (String strNum, int minLength) //转换长度 
{ 

String answer = ""; 
int length = strNum.length(); 

if (length < minLength) 
{ 

for (int padding = (minLength - length); padding > 0; padding--) 
{ 
answer += "0"; 
} 

} 

for (int i = length; i > 0; i--) 
{ 
answer += strNum.charAt (i - 1); 
} 

return answer; 

} 

} 





public static void main(String args[])//产生窗口 
{ 
 calculator win = new calculator(); 
 win.calculato(); 
} 
}


//表达式的求值 

class Calculate{ 
public static boolean isOperator(String operator){ 
if(operator.equals("+")||operator.equals("-")||operator.equals("*")||operator.equals("/")||operator.equals("(")
||operator.equals(")")) return true; 
else return false; 
} 
public static int priority(String operator){ 
if(operator.equals("+")||operator.equals("-")||operator.equals("(")) return 1; 
else if(operator.equals("*")||operator.equals("/")) return 2; 
else return 0; 
} 
public static String twoResult(String operator,String a,String b){ 
try{ 
String op=operator; 
String rs=new String(); 
double x=Double.parseDouble(b); 
double y=Double.parseDouble(a); 
double z=0; 
if(op.equals("+")) z=x+y; 
else if(op.equals("-")) z=x-y; 
else if(op.equals("*")) z=x*y; 
else if(op.equals("/")) z=x/y; 
else z=0; 
return rs+z; 
} 
catch(NumberFormatException e){ 
System.out.println("input has something wrong!"); 
return "Error"; 
} 
} 
} 






class Stacks{ 
private LinkedList list=new LinkedList(); 
int top=-1; 
public void push(Object value){ 
top++; 
list.addFirst(value); 
} 
public Object pop(){ 
Object temp=list.getFirst(); 
top--; 
list.removeFirst(); 
return temp; 

} 
public Object top(){ 
return list.getFirst(); 
} 
} 

class Expression{ 
 ArrayList expression=new ArrayList();//存储中序表达式 
 ArrayList right=new ArrayList();//存储右序表达式 
 String result;//结果 
//依据输入信息创建对象,将数值与操作符放入ArrayList中 
 Expression(String input){ 
StringTokenizer st=new StringTokenizer(input,"+-*/()",true); 
while(st.hasMoreElements()){ 
expression.add(st.nextToken()); 
} 
} 
//将中序表达式转换为右序表达式 
 void toRight(){ 
Stacks aStack=new Stacks(); 
String operator; 
int position=0; 
while(true){ 
if(Calculate.isOperator((String)expression.get(position))){ 
if(aStack.top==-1||((String)expression.get(position)).equals("(")){ 
aStack.push(expression.get(position)); 
} 
else{ 
if(((String)expression.get(position)).equals(")")){ 
if(!((String)aStack.top()).equals("(")){ 
operator=(String)aStack.pop(); 
right.add(operator); 
} 
} 
else{ 
if(Calculate.priority((String)expression.get(position))<=Calculate.priority((String)aStack.top())&&aStack.top!=-1){ 
operator=(String)aStack.pop(); 
if(!operator.equals("(")) right.add(operator); 
} 
aStack.push(expression.get(position)); 
} 
} 
} 
else right.add(expression.get(position)); 
position++; 
if(position>=expression.size()) break; 
} 
while(aStack.top!=-1){ 
operator=(String)aStack.pop(); 
right.add(operator); 
} 
} 
//对右序表达式进行求值 
  String getResult(){ 
this.toRight(); 
Stacks aStack=new Stacks(); 
String op1,op2,is=null; 
Iterator it=right.iterator(); 
while(it.hasNext()){ 
is=(String)it.next(); 
if(Calculate.isOperator(is)){ 
op1=(String)aStack.pop(); 
op2=(String)aStack.pop(); 
aStack.push(Calculate.twoResult(is,op1,op2)); 
} 
else aStack.push(is); 
} 
result=(String)aStack.pop(); 
it=expression.iterator(); 
while(it.hasNext()){ 
System.out.print((String)it.next()); 
} 
return result; 
} }


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -