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

📄 test.java

📁 一款仿功能WINDOWS计算器的JAVA软件 只是少了科学计算部分。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

//导入需要的包
/* 简用计算器 J2SE
 * 作者;hangtao 
 * 版本:1.0 测试版 
 * 最后修改日期
 * 2008/7/14
 * nicholas_me@tom.com 
 * 本人使用JDK 1.6 RC
 * 修改请注明原作者
 */
class Number //数字类
{
    public static int d1;//键盘输入的一位数
	public static double screen;//屏幕上的数值
	public static double number;//临时数字
	public static double n;//小数位数
	public static double memory;//储存器
	public static double result;//结果
	public static boolean isafloat;//当前输入的数是否有小数
    public static String lp;//上一次运算操作符
    public static int step;//运算步数
}



class Input //数据输入类   全部用静态方法

{
	public static void cter(String s,JLabel l )
	{
    	
		if(s.equals("←"))decread(l);
		else 
			
		{
			Number.d1=Integer.parseInt(s);
			incread(l);
		}
        
	}
	public static int numbertype(String s)//判断输入按钮的类型	
	{
		if(s.equals("1")||s.equals("2")||s.equals("3")||s.equals("4")||s.equals("5")||s.equals("6")||s.equals("7")||s.equals("8")||s.equals("9")||s.equals("0")||s.equals("←"))
			return 1;//数字型返回1
		if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/")||s.equals("√")||s.equals("%")||s.equals(".")||s.equals("=")||s.equals("1/x"))
			
			{
			 if(!s.equals("."))Number.step++;Number.n=0;
			 Number.isafloat=false;
			return 2;//操作符返回2
			}
		else 
			return 0;//其他返回0(记忆操作符)
		
	}
	
	
	private static void incread(JLabel l)//数字叠加
	{
		if(Number.isafloat)
		{   Number.n++;
			Number.screen=Number.screen+Math.pow(0.1, Number.n)*Number.d1;
	
		}//如果输入的数有小数点
		else
		Number.screen=Number.screen*10+Number.d1;	
		l.setText(""+Number.screen);
		//System.out.printf("screen:%f\nn:%f\nd1:%d\n",Number.screen,Number.n,Number.d1);
	}
	private static void decread(JLabel l)//返回一位
	{
		if(Number.n<1)
		{
		if(Number.screen<10)Number.screen=0;
		else
		   {
		  Number.screen=(int) Number.screen/10;	
			
	      	}
		}
		else 
		{
			int a=(int) (Number.screen*Math.pow(10, Number.n));
			a=a/10;
			Number.screen=a/(Math.pow(10, Number.n-1));
			Number.n--;
			if(Number.n<=0)Number.isafloat=false;
			
			
			
		}
		l.setText(""+Number.screen);
	}
	
	
	
}

class Counter  //数据运算类     全部用静态方法
{	
	
	public static void cter(String s,JLabel l)
	{

		if(s.equals("+"))	
			plus(l);

		if(s.equals("-"))

			dec(l);
		if(s.equals("*"))
			multiplicat(l);

		if(s.equals("="))
			result(l);
		if(s.equals("/"))
			div(l);
		if(s.equals("%"))
			bfh(l);
		if(s.equals("."))
			setfloat(l);
		if(s.equals("√"))
			sqrt(l);
		if(s.equals("1/x"))
			reciprocal(l);
	}
	private static void setfloat(JLabel l)
	{
		Number.isafloat=true;
	}
	private static void bfh(JLabel l)//百分号 按下"%"
	{
		Number.screen=(float) (Number.screen*0.01);
		l.setText(""+Number.screen);
	}
	private static void div(JLabel l)//除法 按下"/"
	{
		if(Number.lp.equals("/")||Number.step<2)
		{
	 if(Number.step<=1)Number.result=Number.screen;
	  Number.lp="/";
	  //System.out.printf("screen:%f\nresult:%f\n", Number.screen,Number.result);
	  result(l);
		}
		else
		{
			result(l);
			Number.lp="/";
		}
	}
	private static void multiplicat(JLabel l)// 乘法 按下乘
	{
		if(Number.lp.equals("*")||Number.step<2)
		{
	 if(Number.step<=1)Number.result=Number.screen;
	  Number.lp="*";
	  System.out.printf("screen:%f\nresult:%f\n", Number.screen,Number.result);
	  result(l);
		}
		else
		{
			result(l);
			Number.lp="*";
		}
	  
		
		
	}
	private static void plus(JLabel l)//加法  按下"+" 
	{ 
		if(Number.lp.equals("+")||Number.step<2)
		{
	 if(Number.step<=1)Number.result=Number.screen;
	  Number.lp="+";
	  System.out.printf("screen:%f\nresult:%f\n", Number.screen,Number.result);
	  result(l);
		}
		else
		{
			result(l);
			Number.lp="+";
		}
	  
	}
	private static void dec(JLabel l)//减法   按下"-"
	{
		if(Number.lp.equals("-")||Number.step<2)
		
			{
			if(Number.step<=1)Number.result=Number.screen;
		  Number.lp="-";
		  //System.out.printf("screen:%f\nresult:%f\n", Number.screen,Number.result);
		  result(l);
			}
		else 
		{
			result(l);
			Number.lp="-";
		}
        
		
	}
	
	private static void result(JLabel label)//等于 按下"="
	{  
		
		if(Number.lp.equals("+"))
		{
			if(Number.step>1)Number.result=Number.result+Number.screen;
			label.setText(""+Number.result);
			Number.screen=0;
			//System.out.printf("screen:%f\nresult:%f\n", Number.screen,Number.result);
		}
		if(Number.lp.equals("-"))
		{
			if(Number.step>1)Number.result=Number.result-Number.screen;
			label.setText(""+Number.result);
			Number.screen=0;
			//System.out.printf("screen:%f\nresult:%f\n", Number.screen,Number.result);
		}
		if(Number.lp.equals("*"))
		{
			if(Number.step>1)Number.result=Number.result*Number.screen;
			label.setText(""+Number.result);
			Number.screen=0;
			//System.out.printf("screen:%f\nresult:%f\n", Number.screen,Number.result);
		}
		if(Number.lp.equals("/"))
		{
			if(Number.step>1)Number.result=Number.result/Number.screen;
			label.setText(""+Number.result);
			Number.screen=0;
			//System.out.printf("screen:%f\nresult:%f\n", Number.screen,Number.result);
		}
		

	}
	private static void sqrt(JLabel label)//平方根 按下"√"
	{
		Number.screen=Math.sqrt(Number.screen);
		Number.result=Number.screen;
		label.setText(""+Number.result);
	}
	private static void reciprocal(JLabel label)//倒数 按下"1/x"
	{
		Number.screen=1/Number.screen;
		Number.result=Number.screen;
		label.setText(""+Number.result);
		
	}
	
}
class Memory  //储存器处理类
{
	public static void cter(String s, JLabel label)
	{
		if(s.equals("C"))
			clearnscreen(label);
		if(s.equals("CE"))
			CE(label);
		if(s.equals("MR"))
		MR(label);
		if(s.equals("MC"))
			MC(label);
		if(s.equals("MS"))
			MS(label);
		if(s.equals("M+"))
			MA(label);
	}
	public static void clearnscreen(JLabel label)//屏幕清零 按下"C"
	{
		Number.screen=0;
		Number.isafloat=false;
		Number.n=0;
		label.setText(""+Number.screen);
	}
	public static void CE(JLabel label)//全部清零 按下C
	{
		Number.screen=0;
		Number.isafloat=false;
		Number.n=0;
		Number.result=0;
		Number.step=0;
		Number.lp="";
		label.setText(""+Number.screen);
	}
	public static void MR(JLabel label)//读取M给 screen  按下“MR"
	{
		Number.screen=Number.memory;
		label.setText(""+Number.screen);
		Number.isafloat=false;
		Number.n=0;
	}
	public static void MC(JLabel label)//清除记忆 按下"MC"
	{
		Number.memory=0;
	}
	public static void MS(JLabel label)//储存screen到记忆
	{
		Number.memory=Number.screen;
	}
	public static void MA(JLabel label)  //M和屏幕上的书相加结果存到M
	{
		Number.memory=Number.memory+Number.screen;
	}
	

⌨️ 快捷键说明

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