借鉴了网上表达式计算器源代码Work5.java,感谢分享。
不知道为什么不能上传附件,一个一个贴代码?
好吧,捡着主要的贴出来。
第一个:布局文件main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:id="@+id/txtviewTop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="@string/hello"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/edita"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:hint="请输入算式"
android:textSize="40sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btnMS"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textColor="#FF0000"
android:textSize="27sp"
android:text="MS"
/>
<Button
android:id="@+id/btnMR"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textColor="#FF0000"
android:textSize="27sp"
android:text="MR"
/>
<Button
android:id="@+id/btnMC"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textColor="#FF0000"
android:textSize="27sp"
android:text="MC"
/>
<Button
android:id="@+id/btnC"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textColor="#FF0000"
android:textSize="27sp"
android:text="AC"
/>
<Button
android:id="@+id/btnCE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textColor="#FF0000"
android:textSize="27sp"
android:text="C "
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" 7 "
/>
<Button
android:id="@+id/btn8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" 8 "
/>
<Button
android:id="@+id/btn9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" 9 "
/>
<Button
android:id="@+id/btnadd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textColor="#00FF00"
android:textSize="30sp"
android:text="+"
/>
<Button
android:id="@+id/btndec"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textColor="#00FF00"
android:textSize="30sp"
android:text="-"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" 4 "/>
<Button
android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" 5 "
/>
<Button
android:id="@+id/btn6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" 6 "
/>
<Button
android:id="@+id/btnmul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textColor="#00FF00"
android:textSize="30sp"
android:text="x"
/>
<Button
android:id="@+id/btndiv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textColor="#00FF00"
android:textSize="30sp"
android:text="/"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" 1 "
/>
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" 2 "
/>
<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" 3 "
/>
<Button
android:id="@+id/btnLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text="( "
/>
<Button
android:id="@+id/btnRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" ) "
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" 0 "/>
<Button
android:id="@+id/btnpoint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text="."/>
<Button
android:id="@+id/btnresult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" = "/>
<Button
android:id="@+id/btnFang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" ^ "/>
<Button
android:id="@+id/btnqie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:textSize="30sp"
android:text=" ? "/>
</LinearLayout>
<TextView
android:id="@+id/txtb"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text=""
android:textSize="30sp"
android:textColor="#009900"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
第二个:MainActivity.java
package mycompany.plus;
import android.app.*;
import android.content.*;
import android.os.*;
import android.view.*;
import android.view.View.*;
import android.widget.*;
import mycompany.plus.*;
import java.text.*;
import java.math.*;
import Work5;
import android.text.*;
public class MainActivity extends Activity
{
EditText edita;
TextView txtviewTop,txtb;
Button btnpoint,btnqie,btnLeft,btnRight,btnFang,btnadd,btndec,btnmul,btndiv,btnresult,btnMS,btnMR,btnMC,btnC,btnCE;
int i,a,b,flag;
double da,db,dresult;
boolean first1=true;
String daStr,dbStr,resultStr,dresultStr,expression,strM1,hello0="使用我的计算器!";
String Guest1="欢迎您";
int btnid[]=new int[10];
Button btn[]=new Button[10];
//声明存储单元
SharedPreferences sp;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//实例化,etstr是自定义的键名,后面是数据。
sp=getSharedPreferences("SAVE",MODE_PRIVATE);
strM1=sp.getString("etstr","");
hello0=Guest1+hello0;
//获取控件对象
edita=(EditText)findViewById(R.id.edita);
edita.setText("");
txtb=(TextView)findViewById(R.id.txtb);
txtb.setText("");
txtviewTop=(TextView)findViewById(R.id.txtviewTop);
//循环语句为btn赋值
for (i=0;i<btnid.length;i++)
{
btnid[i]=getResources().getIdentifier("btn"+i,"id",getPackageName());
btn[i]=(Button)findViewById(btnid[i]);
btn[i].setOnClickListener(new ShowListener());
}
btnpoint=(Button)findViewById(R.id.btnpoint);
btnpoint.setOnClickListener(new ShowListenerpoint());
btnqie=(Button)findViewById(R.id.btnqie);
//Listener listener=new Listener();
btnqie.setOnClickListener(new ShowListenerqie());
btnLeft=(Button)findViewById(R.id.btnLeft);
btnLeft.setOnClickListener(new ShowListenerLeft());
btnRight=(Button)findViewById(R.id.btnRight);
btnRight.setOnClickListener(new ShowListenerRight());
btnFang=(Button)findViewById(R.id.btnFang);
btnFang.setOnClickListener(new ShowListenerFang());
btnadd=(Button)findViewById(R.id.btnadd);
btnadd.setOnClickListener(new ShowListeneradd());
btndec=(Button)findViewById(R.id.btndec);
btndec.setOnClickListener(new ShowListenerdec());
btnmul=(Button)findViewById(R.id.btnmul);
btnmul.setOnClickListener(new ShowListenermul());
btndiv=(Button)findViewById(R.id.btndiv);
btndiv.setOnClickListener(new ShowListenerdiv());
btnresult=(Button)findViewById(R.id.btnresult);
btnresult.setOnClickListener(new ShowListenerresult());
btnMC=(Button)findViewById(R.id.btnMC);
btnMC.setOnClickListener(new ShowListenerMC());
btnMS=(Button)findViewById(R.id.btnMS);
btnMS.setOnClickListener(new ShowListenerMS());
btnMR=(Button)findViewById(R.id.btnMR);
btnMR.setOnClickListener(new ShowListenerMR());
btnCE=(Button)findViewById(R.id.btnCE);
btnCE.setOnClickListener(new ShowListenerqing());
btnC=(Button)findViewById(R.id.btnC);
btnC.setOnClickListener(new ShowListenerqingAll());
this.txtb=(TextView)findViewById(R.id.txtb);
txtb.setOnClickListener(new ShowListenerRepeat());
txtviewTop.setText(hello0+"M="+strM1);
}
private class ShowListener implements OnClickListener
{
@Override
public void onClick(View p1)
{
// TODO: Implement this method
int id=p1.getId();
switch(id)
{
case R.id.btn0:
edita.setText(edita.getText()+"0");
break;
case R.id.btn1:
edita.setText(edita.getText()+"1");
break;
case R.id.btn2:
edita.setText(edita.getText()+"2");
break;
case R.id.btn3:
edita.setText(edita.getText()+"3");
break;
case R.id.btn4:
edita.setText(edita.getText()+"4");
break;
case R.id.btn5:
edita.setText(edita.getText()+"5");
break;
case R.id.btn6:
edita.setText(edita.getText()+"6");
break;
case R.id.btn7:
edita.setText(edita.getText()+"7");
break;
case R.id.btn8:
edita.setText(edita.getText()+"8");
break;
case R.id.btn9:
edita.setText(edita.getText()+"9");
break;
}
}
}
private class ShowListenerpoint implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
edita.setText(edita.getText()+".");
// 标记小数
}
}
private class ShowListeneradd implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//Toast.makeText(MainActivity.this,"加",Toast.LENGTH_LONG).show();
edita.setText(edita.getText()+"+");
//txtb.setText(txtb.getText()+"+");
}
}
private class ShowListenerdec implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//Toast.makeText(MainActivity.this,"加",Toast.LENGTH_LONG).show();
edita.setText(edita.getText()+"-");
}
}
private class ShowListenermul implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//Toast.makeText(MainActivity.this,"加",Toast.LENGTH_LONG).show();
edita.setText(edita.getText()+"*");
}
}
private class ShowListenerdiv implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//Toast.makeText(MainActivity.this,"加",Toast.LENGTH_LONG).show();
edita.setText(edita.getText()+"/");
}
}
private class ShowListenerMC implements OnClickListener
{
@Override
public void onClick(View p1)
{
// TODO: Implement this method
strM1="0";
txtviewTop.setText(hello0+"M="+strM1);
sp.edit().putString("etstr",strM1).commit();
}
}
private class ShowListenerMS implements OnClickListener
{
@Override
public void onClick(View p1)
{
// TODO: Implement this method
strM1=edita.getText().toString();
//txtviewTop.setText(txtviewTop.getText().toString()+"M="+strM1);
txtviewTop.setText(hello0+"M="+strM1);
sp.edit().putString("etstr",strM1).commit();
}
}
private class ShowListenerMR implements OnClickListener
{
@Override
public void onClick(View p1)
{
// TODO: Implement this method
edita.setText(edita.getText()+strM1);
}
}
private class ShowListenerresult implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//Toast.makeText(MainActivity.this,"加",Toast.LENGTH_LONG).show();
//db=Double.parseDouble(edita.getText().toString());
try{jisuan();}
catch(Exception e){
txtb.setText(e.getMessage());
}
}
}
public void jisuan()
{
//计算过程
Work5 work5=new Work5();
expression = edita.getText().toString();
//String suffix=work5.infixToSuffix(expression);
//resultStr = String.format("%.2f", work5.evalExp(expression));
resultStr=""+work5.evalExp(expression);
txtb.setText(Html.fromHtml(expression +"<font color ='red'> = "+resultStr+"</font>"));
//改变标签内某个字符颜色
edita.setText(resultStr);
//over
}
private class ShowListenerLeft implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//左括号
edita.setText(edita.getText()+"(");
}
}
private class ShowListenerRight implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//右括号
edita.setText(edita.getText()+")");
}
}
private class ShowListenerFang implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//乘方
edita.setText(edita.getText()+"^");
//txtb.setText(txtb.getText()+"^");
}
}
private class ShowListenerqing implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//删除最后一个字符
String s1=edita.getText().toString();
if (s1.length()>0)
{
s1=s1.substring(0,s1.length()-1);
edita.setText(s1);
}
}
}
private class ShowListenerqingAll implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//Toast.makeText(MainActivity.this," 清零",Toast.LENGTH_LONG).show();
edita.setText("");
txtb.setText("");
}
}
private class ShowListenerRepeat implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//Toast.makeText(MainActivity.this," 清零",Toast.LENGTH_LONG).show();
//edita.setText(txtb.getText());
edita.setText(expression);
}
}
private class ShowListenerqie implements OnClickListener
{
@Override
public void onClick(View v)
{
// TODO: Implement this method
//Toast.makeText(MainActivity.this," 切换好了",Toast.LENGTH_LONG).show();
/*if (editb.getText()!="")
{
}*/
Intent intent = new Intent();
intent.putExtra("editastr",txtb.getText().toString());
intent.setClass(MainActivity.this,Activity2.class);
startActivity(intent);
//MainActivity.this.finish();
}
}
}
找到附件上传方式了,在下载-上传里,贴出来分享一下:点击打开链接
https://download.youkuaiyun.com/download/qq_42030500/10371199