Process data according to given logic
Print out requested information
以前写的,很乱。仅供参考import java.awt.*
import javax.swing.*
import java.awt.event.*
import java.util.ArrayList
public class T implements ActionListener{
private int append = 1
JTextField jtf = new JTextField(10)
String s1=""
String s2=""
int n=0
ArrayList<String>aList1=new ArrayList<String>()
ArrayList<String>aList2=new ArrayList<String>()
public T(){
JFrame jf = new JFrame("计算器")
jf.add(jtf,BorderLayout.NORTH)
jf.setSize(200,100 )
JPanel jp = new JPanel()
GridLayout gl = new GridLayout(5,4)
jp.setLayout(gl)
String[] lab = {"BackS","CE","C","+",
"7","8","9","-","4","5","6","*",
"1","2","3","/","0",".","+/-","="}
for(int i=0i<lab.lengthi++){
JButton jb = new JButton(lab[i])
jp.add(jb)
jb.addActionListener(this)
}
jf.add(jp)
jf.setSize(300,300)
jtf.setEditable(false)
jf.setResizable(false)
jf.setLocation(300, 200)jf.setVisible(true)
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
}
String num1 = "0"
String operator = "+"
public void actionPerformed(ActionEvent ae) {
String comm = ae.getActionCommand()
if("0123456789".indexOf(comm)!=-1){
if(append==1){
n=0
s2=s2+comm
s1=s1+comm
}
else{
aList1.clear()
append=1
s2=s2+comm
s1=comm
}
jtf.setText(s1)
}else if("+-*/".indexOf(comm)!=-1){
n++
if(n==1){
s1=s1+comm
aList2.add(comm)
}
if(append==0)
append=1
if(s2!=""){
aList1.add(s2)
}
s2=""
jtf.setText(s1)
}else if("=".equals(comm)){
aList1.add(s2)
double d1
double d2
int i=0
while(aList2.contains("*")||aList2.contains("/")){
int flag=0
if(aList2.size()>0&&"*".equals(aList2.get(i))){
d1 = Double.parseDouble(aList1.get(i))
d2 = Double.parseDouble(aList1.get(i+1))
d1=d1*d2
aList1.remove(i)
System.out.println("RE:"+aList1)
aList1.set(i,d1+"")
System.out.println("Set:"+aList1)
aList2.remove(i)
System.out.println(aList2)
flag++
System.out.println("*"+i)
}
if(i==aList2.size())
i--
if(aList2.size()>0&&"/".equals(aList2.get(i))){
System.out.println("/"+i)
d1 = Double.parseDouble(aList1.get(i))
d2 = Double.parseDouble(aList1.get(i+1))
d1=d1/d2
aList1.remove(i)
aList1.set(i,d1+"")
aList2.remove(i)
flag++
System.out.println("/"+aList2)
}
if(flag==0)
i++
}
while(aList2.contains("+")||aList2.contains("-")){
i=0
if("+".equals(aList2.get(i))){
d1 = Double.parseDouble(aList1.get(i))
d2 = Double.parseDouble(aList1.get(i+1))
d1=d1+d2
aList1.remove(i)
System.out.println("Re"+aList1)
aList1.set(i,d1+"")
System.out.println("Set:"+aList1)
aList2.remove(i)
System.out.println("alist2:"+aList2)
System.out.println(aList2.size())
}
if(aList2.size()>0&&"-".equals(aList2.get(i))){
d1 = Double.parseDouble(aList1.get(i))
d2 = Double.parseDouble(aList1.get(i+1))
d1=d1-d2
aList1.remove(i)
aList1.set(i,d1+"")
aList2.remove(i)
}
}
s1=s1+comm+aList1.get(aList1.size()-1)
jtf.setText(s1)
s2=""
s1=aList1.get(aList1.size()-1)
append = 0
}else if(".".equals(comm)){
String temp=s2
if(temp.indexOf(".")==-1){
s1=s1+comm
jtf.setText(s1)
s2=s2+comm
append = 1
}
}else if("+/-".equals(comm)){
String temp = jtf.getText()
if(temp.startsWith("-")){
jtf.setText(temp.substring(1))
}else{
jtf.setText("-"+temp)
}
}else if("CE".equals(comm)||"C".equals(comm)){
jtf.setText("0")
s2=""
s1=""
append = 0
}else if("BackS".equals(comm)){
String temp = s1
if(temp.length()>0){
if(s1.endsWith("+")||s1.endsWith("-")||s1.endsWith("*")||s1.endsWith("/")){
System.out.print("不可再移除!")
return
}
jtf.setText(temp.substring(0,
temp.length()-1))
s1=s1.substring(0, s1.length()-1)
s2=s2.substring(0,s2.length()-1)
}
else{
System.out.println("没有可以移除的!")
}
}
}
public static void main(String[] args) {
new T()
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)