
eclipse中一般是使用java swing做界面,计算器的函数功能使用一些工具函数,示例如下:
import javax.swing.*import java.awt.*
import java.awt.event.*
public class Calculator extends JFrame implements ActionListener{
private static final long serialVersionUID = 8199443193151152362L
private JButton bto_s=new JButton("sqrt"),bto_zf=new JButton("+/-"),bto_ce=new JButton("CE"),bto_c=new JButton("C"),bto_7=new JButton("7"),
bto_8=new JButton("8"),bto_9=new JButton("9"),bto_chu=new JButton("/"),bto_4=new JButton("4"),bto_5=new JButton("5"),
bto_6=new JButton("6"),bto_cheng=new JButton("*"),bto_1=new JButton("1"),bto_2=new JButton("2"),bto_3=new JButton("3"),
bto_jian=new JButton("-"),bto_0=new JButton("0"),bto_dian=new JButton("."),bto_deng=new JButton("="),bto_jia=new JButton("+")
JButton button[]={bto_s,bto_zf,bto_ce,bto_c,bto_7,bto_8,bto_9,bto_chu,bto_4,bto_5,bto_6,bto_cheng,bto_1,bto_2,bto_3,bto_jian,
bto_0,bto_dian,bto_deng,bto_jia}
private JTextField text_double// = new JTextField("0")
private String operator = "=" //当前运算的运算符
private boolean firstDigit = true // 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字
private double resultNum = 0.0 // 计算的中间结果
private boolean operateValidFlag = true //判断 *** 作是否合法
public Calculator()
{
super("Calculator")
this.setBounds(300, 300, 300, 300)
this.setResizable(false)
this.setBackground(Color.orange)
this.setDefaultCloseOperation(EXIT_ON_CLOSE)
this.getContentPane().setLayout(new BorderLayout())//设置布局
text_double=new JTextField("0",20)//设置文本区
text_double.setHorizontalAlignment(JTextField.RIGHT)//设置水平对齐方式未右对齐
this.getContentPane().add(text_double,BorderLayout.NORTH)//将文本区添加到Content北部
JPanel panel=new JPanel(new GridLayout(5,4))//在内容窗口添加一个网格布局
this.getContentPane().add(panel)//添加panel面板
for(int i=0i<button.lengthi++)//在面板上添加按钮
panel.add(button[i])
for(int i=0i<button.lengthi++)
button[i].addActionListener(this)//为按钮注册
text_double.setEditable(false)//文本框不可编辑
text_double.addActionListener(this)//
this.setVisible(true)
}
public void actionPerformed(ActionEvent e)//
{
String c= e.getActionCommand()//返回与此动作相关的命令字符串。
if(c.equals("C")){
handleC() //用户按了“C”键
}
else if (c.equals("CE")) // 用户按了"CE"键
{
text_double.setText("0")
}
else if ("0123456789.".indexOf(c) >= 0) // 用户按了数字键或者小数点键
{
handleNumber(c) // handlezero(zero)
} else //用户按了运算符键
{
handleOperator(c)
}
}
private void handleC() // 初始化计算器的各种值
{
text_double.setText("0")
firstDigit = true
operator = "="
}
private void handleNumber(String button) {
if (firstDigit)//输入的第一个数字
{
text_double.setText(button)
} else if ((button.equals(".")) && (text_double.getText().indexOf(".") < 0))//输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面
//如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1
{
text_double.setText(text_double.getText() + ".")
} else if (!button.equals("."))// 如果输入的不是小数点,则将数字附在结果文本框的后面
{
text_double.setText(text_double.getText() + button)
}
// 以后输入的肯定不是第一个数字了
firstDigit = false
}
private void handleOperator(String button) {
if (operator.equals("/")) {
// 除法运算
// 如果当前结果文本框中的值等于0
if (getNumberFromText() == 0.0){
// *** 作不合法
operateValidFlag = false
text_double.setText("除数不能为零")
} else {
resultNum /= getNumberFromText()
}
} else if (operator.equals("+")){
// 加法运算
resultNum += getNumberFromText()
} else if (operator.equals("-")){
// 减法运算
resultNum -= getNumberFromText()
} else if (operator.equals("*")){
// 乘法运算
resultNum *= getNumberFromText()
} else if (operator.equals("sqrt")) {
// 平方根运算
if(getNumberFromText()<0){
operateValidFlag = false
text_double.setText("被开方数不能为负数")}
else
resultNum = Math.sqrt(resultNum)
}
else if (operator.equals("+/-")){
// 正数负数运算
resultNum = resultNum * (-1)
} else if (operator.equals("=")){
// 赋值运算
resultNum = getNumberFromText()
}
if (operateValidFlag) {
// 双精度浮点数的运算
long t1
double t2
t1 = (long) resultNum
t2 = resultNum - t1
if (t2 == 0) {
text_double.setText(String.valueOf(t1))
} else {
text_double.setText(String.valueOf(resultNum))
}
}
operator = button //运算符等于用户按的按钮
firstDigit = true
operateValidFlag = true
}
private double getNumberFromText() //从结果的文本框获取数字
{
double result = 0
try {
result = Double.valueOf(text_double.getText()).doubleValue() // ValueOf()返回表示指定的 double 值的 Double 实例
} catch (NumberFormatException e){
}
return result
}
public static void main(final String[] args) {
new Calculator()
}
}
eclipse创建android项目1.选择android项目类型2.填写项目属性
Application Name:是应用的名称,将来在app stop上看到;Project Name : 是工程名称;Packge Name :是项目JAVA代码的包路径;Minimum Required SDK:最低要求的SDK;Target SDK:目标的SDK;Compile With:在哪个版本上编译;Theme:项目的主题。
Create custom laubcher icon:创建启动的图标;Create activity:创建活动;Mark this project as a library:将此项目标记为库;(勾选执行的时候可能会出错:android library project can not launch)Create Project in Workspace : 项目所在工作路径;Add project to working sets:将项目添加到工作集。3.图标
4.活动类型
完成!
eclipse用waitch摸拟计算具体步骤如下1、打开Eclipse,新建一个项目Calculate(File>New>Android Application Project)
2、本次目标是实现带有加减乘除清零功能的计算器
3、首先,先实现计算器的布局,双击项目Calculate>双击res>双击layout>双击activity_main.xml。计算器使用线性布局LinearLayout,从上图可以看出本次使用17个Button控件和2个TextView控件(显示文本),计算器的上方是2个TextView
4、实现了TextView的布局后就是Button了,这里为了美观,除了左边第一个的按钮外要设置marginLeft(距离左边的宽度)
5、同理设置剩余Button的布局
6、完成layout后,双击Calculate>src>com.example.calculate>MainActivity.java,然后开始对组件进行功能实现,首先对控件进行初始化,然后对每个控件添加监听器,实现加减乘除等功能
7、完成布局和功能实现后就可以保存并运行了,右击Calculate>Run As>Android Application
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)