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

📄 calc.java

📁 这是我上学期收集的一些我们班高手的JAVA期末作业的源代码
💻 JAVA
字号:
import java.applet.*;
import java.awt.event.*;
import java.awt.*;

public class Calc extends Applet implements ActionListener{
	
	double num1,num2;  //存储要运算的操作数
	String temp="";    //存储要保存的操作数
	int op[]={0,0};   //标识按下的操作符
	boolean numSign=false;  //赋值标记
	boolean dotSign=false;  //小数点标记
	boolean input=false;  //输入标记
	boolean cueSign=false; //出错提示标记
	boolean save=false;   //保存标记
	boolean on_off=false;    //开关标记

	TextField txt1=new TextField("0",24);
	TextField txt2=new TextField(2);
	String fun[]={"Back","CE","C","ON","MC","MR","MS","M+"};
	String gen[]={"7","8","9","/","sqrt","4","5","6","*","%",
					"1","2","3","-","1/x","0","+/-",".","+","="};
	Button button_fun[]=new Button[fun.length];
	Button button_gen[]=new Button[gen.length];
	
	Panel p0=new Panel();
	Panel p1=new Panel(new GridLayout(1,4,6,6));
	Panel p2=new Panel(new GridLayout(5,5,6,6));
	Panel p3=new Panel(new BorderLayout(0,6));

	public void init(){
		int i,len1=fun.length,len2=gen.length;
		Color bgc=new Color(102,153,153);
		txt1.setEditable(false);txt2.setEditable(false);
		txt1.setBackground(new Color(0,153,204));
		txt1.setFont(new Font("TimesRoman",Font.BOLD,15));
		txt1.setForeground(Color.green);
		txt2.setForeground(Color.red);
		setBackground(bgc);
		
		for(i=0;i<len1;i++){
			button_fun[i]=new Button(fun[i]);
			button_fun[i].setForeground(Color.red);
			button_fun[i].addActionListener(this);
		}
		for(i=0;i<len2;i++){
			button_gen[i]=new Button(gen[i]);
			button_gen[i].setForeground(Color.blue);
			button_gen[i].addActionListener(this);
		}

    	p0.add(txt1);
		for(i=0;i<4;i++) p1.add(button_fun[i]);
		p2.add(txt2);
		for(i=4;i<len1;i++) p2.add(button_fun[i]);
		for(i=0;i<len2;i++) p2.add(button_gen[i]);
		
		p3.add(p1,"North");p3.add(p2,"South");
		setLayout(new FlowLayout(FlowLayout.CENTER,0,12));
		add(p0); add(p3); 
		off();
	}
	
	public void actionPerformed(ActionEvent e){
		long intNum;  //临时变量
		Object button=e.getSource();
		
		//错误提示处理
		if(cueSign==true){showText("0");cueSign=false;}
		//开关事件处理
		if(button==button_fun[3]){
			if(!on_off){on();on_off=true;}
			else {off();on_off=false;}
			return;
		}

		String str=txt1.getText();  //当前显示框内容
		str=str.trim();
		num2=Double.parseDouble(str);	//字符串转化为数字
		
		//数字键事件处理
		if(button==button_gen[0]) {inputNumber("7");return;}
		if(button==button_gen[1]) {inputNumber("8");return;}
		if(button==button_gen[2]) {inputNumber("9");return;}
		if(button==button_gen[5]) {inputNumber("4");return;}
		if(button==button_gen[6]) {inputNumber("5");return;}
		if(button==button_gen[7]) {inputNumber("6");return;}
		if(button==button_gen[10]) {inputNumber("1");return;}
		if(button==button_gen[11]) {inputNumber("2");return;}
		if(button==button_gen[12]) {inputNumber("3");return;}
		if(button==button_gen[15]) {inputNumber("0");return;}
		
		//运算键事件处理
		if(button==button_gen[18]) {op[1]=1;operate(1);return;}
		if(button==button_gen[13]) {op[1]=2;operate(1);return;}
		if(button==button_gen[8]) {op[1]=3;operate(1);return;}
		if(button==button_gen[3]) {op[1]=4;operate(1);return;}
		if(button==button_gen[19]) {operate(2);return;}
			
		//开方键(sqrt)事件处理
		if(button==button_gen[4]){
			num2=Math.sqrt(num2);
			intNum=(long)(num2);
			if((double)(intNum)==num2)
				showText(String.valueOf(intNum));
			else showText(String.valueOf(num2));
			input=false; dotSign=false;
			return;
		}
		
		//百分号(%)事件处理
		if(button==button_gen[9]){
			showText(String.valueOf(num2/100));
			input=false; dotSign=false;
			return;
		}
		
		//倒数键(1/x)事件处理
		if(button==button_gen[14]){
			if(num2!=0) showText(String.valueOf(1/num2));
			else {showText("除数不能为零!     "); cueSign=true;}
			input=false; dotSign=false;
			return;
		}
		
		// 正负号(+/-)事件处理
		if(button==button_gen[16]){
			if(num2!=0){
				intNum=(long)(num2);
				if((double)(intNum)==num2)
					showText(String.valueOf(-intNum));
				else showText(String.valueOf(-num2));
			}
			return;
		}
		
		//小数点事件处理
		if(button==button_gen[17]){
			if(!input){
				showText("0.");
				dotSign=true; input=true;
			}
			else if(!dotSign){
				showText(str+".");
				dotSign=true; input=true;
			}
			return;
		}	
		
		//退格键(Back)事件处理
		if(button==button_fun[0]){
			if(input){
				if(str.length()>2 || str.length()==2 && num2>0){
					showText(str.substring(0,str.length()-1));
					if(str.substring(str.length()-1,str.length()).equals("."))
						dotSign=false;
				}
				else {showText("0");input=false;dotSign=false;}
			}
			return;
		}
		
		//清零键(CE)事件处理
		if(button==button_fun[1]) {
			showText("0");
			input=false; dotSign=false;
			return;
		}
		
		//清零键(C)事件处理
		if(button==button_fun[2]){
			showText("0");
			num1=0; op[0]=op[1]=0;
			numSign=false; dotSign=false;
			input=false;
			return;
		}
		
		//清零键(MC)事件处理
		if(button==button_fun[4]){
			temp="";save=false;
			txt2.setText("");
			return;
		}
		
		//提取键(MR)事件处理
		if(button==button_fun[5]){
			if(Double.parseDouble(temp)!=0){
				showText(temp);
				input=false; dotSign=false;
			}
			return;
		}
		
		//保存键(MS)事件处理
		if(button==button_fun[6]){
			if(num2!=0){
				temp=str;
				txt2.setText("  M"); save=true;
				input=false; dotSign=false;
			}
			return;
		}
		
		//加保存键(M+)事件处理
		if(button==button_fun[7]){
			if(num2!=0){
				if(save==false){
					temp=str; save=true;
					txt2.setText("  M");
				}
				else{
					intNum=(int)(Double.parseDouble(temp)+num2);
					if(intNum==Double.parseDouble(temp)+num2)
						temp=String.valueOf(intNum);
					else temp=String.valueOf(Double.parseDouble(temp)+num2);
				}
				input=false; dotSign=false;
			}
		}
		
	}
	
	//开关关事件处理方法
	public void off(){
		int i;
		for(i=0;i<fun.length;i++) button_fun[i].setEnabled(false);
		for(i=0;i<gen.length;i++) button_gen[i].setEnabled(false);
		button_fun[3].setEnabled(true);
		button_fun[3].setLabel("ON");
		button_fun[3].setForeground(Color.red);
		showText("");txt2.setText("");
		num1=0; op[0]=op[1]=0;
		numSign=false; dotSign=false;
		input=false;save=false;
		temp="";
	}
	
	//开关开事件处理方法
	public void on(){
		int i;
		for(i=0;i<fun.length;i++) button_fun[i].setEnabled(true);
		for(i=0;i<gen.length;i++) button_gen[i].setEnabled(true);
		button_fun[3].setLabel("OFF");
		button_fun[3].setForeground(Color.green);
		showText("0");
	}
	
	//输出显示处理方法
	public void showText(String str){
		int i,len=str.length();
		String blank="";
		for(i=0;i<23-len;i++) blank=blank.concat(" ");
		txt1.setText(blank+str);
	}
	
	//输入数字处理方法
	public void inputNumber(String s){
		String str=txt1.getText();
		str=str.trim();
		
		if(Double.parseDouble(str)==0 && s.equals("0") && dotSign==false)
			;
			else if(input==false){
				showText(s);
				if(Double.parseDouble(s)!=0) input=true;
			}
			else showText(str+s);
	}
	
	//运算操作方法
	public void operate(int i){
		long intNum;
		
		if(i==1){
			if(op[0]==0)
				switch(op[1]){
					case 1: num1=num2;op[0]=1;break;
					case 2: num1=num2;op[0]=2;break;
					case 3: num1=num2;op[0]=3;break;
					case 4: num1=num2;op[0]=4;break;
				}
			else{
				switch(op[0]){
					case 1: num1+=num2;break;
					case 2: num1-=num2;break;
					case 3: num1*=num2;break;
					case 4: if(num2!=0) num1/=num2;
							else cueSign=true;
							break;
				}
				if(cueSign==false){
					intNum=(long)(num1);
					if((double)(intNum)==num1)
						showText(String.valueOf(intNum));
					else showText(String.valueOf(num1));
					switch(op[1]){
						case 1: op[0]=1;break;
						case 2: op[0]=2;break;
						case 3: op[0]=3;break;
						case 4: op[0]=4;break;
					}
				}
				else {showText("除数不能为零!     "); op[0]=0;}
			}
			dotSign=false;
			input=false;
		}
		else{
			switch(op[0]){
				case 1: num1+=num2;break;
				case 2: num1-=num2;break;
				case 3: num1*=num2;break;
				case 4: if(num2!=0) num1/=num2;
						else cueSign=true;
						break;
			}
			if(cueSign==false){
				intNum=(long)(num1);
				if((double)(intNum)==num1)
					showText(String.valueOf(intNum));
				else showText(String.valueOf(num1));
			}
			else showText("除数不能为零!     ");
			op[0]=0;
			dotSign=false;
			input=false;
		}
	}
	
}

⌨️ 快捷键说明

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