Android 计算器 demo

待会儿将下面的话语重构一下:
今天的一个Android代码书写收获是:写完一部分核心代码,就运行一次,yes!
如果有语法错误,我是能直接看出来的,但特么要是逻辑错呢?长时间不运行,一旦出错了,
那就卧槽!等死吧!
所以啊,一旦用手头E430C这个本来写Android代码,记住一定要:书写一段核心demo,就立马运行,
一是看效果,二是是否出现程序运行失败的错误,有的话立马退回去改!!




计算器:
1、显示通过LinearLayout布局管理器布局
2、在预先设计好的位置填充各个View组件,
注:要控制好layout_height以及layout_width的填充方式,
wrap_content 包裹内容的填充方式
fill_parent 填充满撑开父辈组件的方式
一旦fill_parent的填充方式使用不当,即会造成另一个布局被抵开,于屏幕中不予显示
3、标记号各个组件的ID
4、在MainActivity中定义对应于res.layout中的各个组件的相应变量,并通过findViewById()方法获取对象
5、构建新的事件响应类(如subClickListener)去继承(implements)OnClickListener(),
eg: private subClickListener implements OnClickListener()
同时,重写OnClickListener()类中的onClick()方法,即在onClick()方法中书写具体的响应操作
6、将(步骤5)所述的相应类绑定在需要监听的按钮上。
eg: this.but.setOnClickListener(new subClickListener());
7、重复5、6步骤\



下面首先是res->layout->activity_main.xml文件的demo:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="欢迎来到么么哒计算器~ ^_^s" />
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    	
        <EditText
        	android:id="@+id/mytxt1"
        	android:layout_width= "wrap_content"
        	android:layout_height="wrap_content"
        	android:text="8"
        />
        <TextView
        	android:id="@+id/myope"
        	android:layout_height= "wrap_content"
        	android:layout_width="wrap_content"
        	android:text="o"
        />
        <EditText
        	android:id="@+id/mytxt2"
        	android:layout_height="wrap_content"
        	android:layout_width="wrap_content"
        	android:text="4"
        />
        <TextView
        	android:id="@+id/mysig"
        	android:layout_width = "wrap_content"
        	android:layout_height="wrap_content"
        	android:text=" = "
        />
        <EditText
        	android:id="@+id/mytxt3"
        	android:layout_width="wrap_content"
        	android:layout_height="wrap_content"
        	android:text="0"
        />        
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
            	
        <Button
       		android:id="@+id/mybutadd"
       		android:layout_width="wrap_content"
       		android:layout_height="wrap_content"
       		android:text="+"
       	/>
        <Button
       		android:id="@+id/mybutsub"
       		android:layout_width="wrap_content"
       		android:layout_height="wrap_content"
       		android:text="-"
       	/>
        <Button
       		android:id="@+id/mybutmul"
       		android:layout_width="wrap_content"
       		android:layout_height="wrap_content"
       		android:text="*"
       	/>
        <Button
       		android:id="@+id/mybutdiv"
       		android:layout_width="wrap_content"
       		android:layout_height="wrap_content"
       		android:text="/"
       	/>                
    </LinearLayout>
    
    <LinearLayout
        android:orientation="horizontal"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
    	<Button
    		android:id="@+id/mybut1"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="1"
    	/>
    	<Button
    		android:id="@+id/mybut2"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="2"
    	/>
    	<Button
    		android:id="@+id/mybut3"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="3"
    	/>
    	<Button
    		android:id="@+id/mybut4"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="4"
    	/>
    </LinearLayout>
    
    <LinearLayout
        android:orientation="horizontal"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
    	
        <Button
    		android:id="@+id/mybut5"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="5"
    	/>
        <Button
    		android:id="@+id/mybut6"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="6"
    	/>
        <Button
    		android:id="@+id/mybut7"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="7"
    	/>
        <Button
    		android:id="@+id/mybut8"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="8"
    	/>
        
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
    	
        <Button
    		android:id="@+id/mybut9"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="9"
    	/>
        <Button
    		android:id="@+id/mybut0"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="0"
    	/>
        <Button
    		android:id="@+id/mybutcle"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="Clear"
    	/>
        <Button
    		android:id="@+id/mybutequ"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="="
    	/>
        
    </LinearLayout>
    
</LinearLayout>

嗯,然后接下来是MainActivity类的demo:


package com.example.jisuanqi;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {
	
	//gloable var
	//现在要增加全局变量了
	int n1 = 0;
	int n2 = 0;
	String sig = null;

	//定义对应于相应组件的变量
	private EditText txt1 = null;
	private TextView ope = null;
	private EditText txt2 = null;
	private EditText txt3 = null;
	
	private Button butadd = null;
	private Button butsub = null;
	private Button butmul = null;
	private Button butdiv = null;

	private Button but1 = null;
	private Button but2 = null;
	private Button but3 = null;
	private Button but4 = null;
	
	private Button but5 = null;
	private Button but6 = null;
	private Button but7 = null;
	private Button but8 = null;

	private Button but9 = null;
	private Button but0 = null;
	private Button butcle = null;
	private Button butequ = null;
	
	//程序主体枝干从这里开始:
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_main);
		
		this.txt1 = (EditText) super.findViewById(R.id.mytxt1);
		//注意:此处如果强制类转换,将EditText转换成TextView是不会报错的
		this.ope = (TextView) super.findViewById(R.id.myope);
		this.txt2 =(EditText) super.findViewById(R.id.mytxt2);
		this.txt3 =(EditText) super.findViewById(R.id.mytxt3);
		
		//下面是开始给符号进行关联组件
		this.butadd = (Button) super.findViewById(R.id.mybutadd);
		this.butsub = (Button) super.findViewById(R.id.mybutsub);
		this.butmul = (Button) super.findViewById(R.id.mybutmul);
		this.butdiv = (Button) super.findViewById(R.id.mybutdiv);
		
		//下面是数字按钮
		this.but1 = (Button) super.findViewById(R.id.mybut1);
		this.but2 = (Button) super.findViewById(R.id.mybut2);
		this.but3 = (Button) super.findViewById(R.id.mybut3);
		this.but4 = (Button) super.findViewById(R.id.mybut4);
		this.but5 = (Button) super.findViewById(R.id.mybut5);
		this.but6 = (Button) super.findViewById(R.id.mybut6);
		this.but7 = (Button) super.findViewById(R.id.mybut7);
		this.but8 = (Button) super.findViewById(R.id.mybut8);
		this.but9 = (Button) super.findViewById(R.id.mybut9);
		this.but0 = (Button) super.findViewById(R.id.mybut0);
		
		//最下一排按钮的组件关联
		this.butcle = (Button) super.findViewById(R.id.mybutcle);
		this.butequ = (Button) super.findViewById(R.id.mybutequ);

		//-------------------------
		//好,现在开始对组件进项绑定监听
		//-------------------------
		//操作符的绑定
		this.butadd.setOnClickListener(new addClickListener());
		this.butsub.setOnClickListener(new subClickListener());
		this.butmul.setOnClickListener(new mulClickListener());
		this.butdiv.setOnClickListener(new divClickListener());
		
		//数字按钮的绑定
		this.but1.setOnClickListener(new but1ClickListener());
		this.but2.setOnClickListener(new but2ClickListener());
		this.but3.setOnClickListener(new but3ClickListener());
		this.but4.setOnClickListener(new but4ClickListener());
		this.but5.setOnClickListener(new but5ClickListener());
		this.but6.setOnClickListener(new but6ClickListener());
		this.but7.setOnClickListener(new but7ClickListener());
		this.but8.setOnClickListener(new but8ClickListener());
		this.but9.setOnClickListener(new but9ClickListener());
		this.but0.setOnClickListener(new but0ClickListener());
		
		//清除键的绑定
		this.butcle.setOnClickListener(new clearClickListener());
		
		//最终大结局来啦!!
		//“等于”号的绑定
		this.butequ.setOnClickListener(new equClickListener());
		
	}
	//程序主体枝干结束
	
	
	//开始定义响应事件中的运算符操作
	private class addClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			sig = "+";
			//你就zuo嘛、是不是作死在这里了
			MainActivity.this.ope.setText(" " + sig + " ");
		}
		
	}
	private class subClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			sig = "-";
			MainActivity.this.ope.setText(" " + sig + " ");
		}
		
	}
	private class mulClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			sig = "*";
			MainActivity.this.ope.setText(" " + sig + " ");
		}
		
	}
	private class divClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			sig = "/";
			MainActivity.this.ope.setText(" " + sig + " ");
		}
		
	}
	
	//开始响应数字按钮
	private class but1ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 1;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 1;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}
		
	}
	
	private class but2ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 2;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 2;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but3ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 3;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 3;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but4ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 4;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 4;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but5ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 5;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 5;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	private class but6ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 6;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 6;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but7ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 7;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 7;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but8ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 8;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 8;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but9ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 9;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 9;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but0ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 0;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 0;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	//数字键的监听到此结束
	
	//清除键的监听
	private class clearClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = 0;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = 0;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class equClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			//MainActivity.this.txt3.setText(String.valueOf(n1+n2));
			//好了,现在知道出错出在这里了
			if(MainActivity.this.ope.getText().toString().equals(" " + "+" + " "))
			{
				//n1 = 0;
				MainActivity.this.txt3.setText(String.valueOf(n1+n2));
			}
			
			if(MainActivity.this.ope.getText().toString().equals(" " + "-" + " "))
			{
				//n1 = 0;
				MainActivity.this.txt3.setText(String.valueOf(n1-n2));
			}
			if(MainActivity.this.ope.getText().toString().equals(" " + "*" + " "))
			{
				//n1 = 0;
				MainActivity.this.txt3.setText(String.valueOf(n1*n2));
			}
			if(MainActivity.this.ope.getText().toString().equals(" " + "/" + " "))
			{
				//n1 = 0;
				MainActivity.this.txt3.setText(String.valueOf(n1/n2));
			}
			
			/*
			if(MainActivity.this.ope.getText().toString().equals("+")){
				MainActivity.this.txt3.setText(String.valueOf(n1+n2));
			}
			
			
			if(MainActivity.this.ope.getText().toString().equals("-")){
				MainActivity.this.txt3.setText(String.valueOf(n1-n2));
			}
			*/
			
		}
		
	}
	
	
	
	
	
	

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}




package ymq.demo03; import android.app.Activity; import android.os.Bundle; import android.view.*; import android.widget.*; public class demo03 extends Activity { /** Called when the activity is first created. */ String str=""; EditText et; int c=0,flag=0; double b=0.0,g=0.0,f=0.0; View vi; public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add(0, 1, 1, "退出"); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub if(item.getItemId()==1){finish();} return super.onOptionsItemSelected(item); } //计算方法 public double calculater(){ switch(c){ case 0:f=g;break; case 1:f=b+g;break; case 2:f=b-g;break; case 3:f=b*g;break; case 4:f=b/g;break; } b=f; c=0; return f; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //获得按键 final Button number[]=new Button[10]; final Button fuhao[]=new Button[11]; fuhao[0]=(Button)findViewById(R.id.button01); fuhao[1]=(Button)findViewById(R.id.button02); fuhao[2]=(Button)findViewById(R.id.button03); fuhao[3]=(Button)findViewById(R.id.button04); fuhao[4]=(Button)findViewById(R.id.button05); fuhao[5]=(Button)findViewById(R.id.button06); fuhao[6]=(Button)findViewById(R.id.buttonce); fuhao[7]=(Button)findViewById(R.id.buttonc); fuhao[8]=(Button)findViewById(R.id.zheng); fuhao[9]=(Button)findViewById(R.id.kaifang); fuhao[10]=(Button)findViewById(R.id.pingfang); number[0]=(Button)findViewById(R.id.button0); number[1]=(Button)findViewById(R.id.button1); number[2]=(Button)findViewById(R.id.button2); number[3]=(Button)findViewById(R.id.button3); number[4]=(Button)findViewById(R.id.button4); number[5]=(Button)findViewById(R.id.button5); number[6]=(Button)findViewById(R.id.button6); number[7]=(Butto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值