
本问题希望的效果是,点击等于号后,以字符串的形式返回算式里面的符号
源码如下,MainActivity
package com.example.calculator_v3;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.xml.sax.SAXException;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
protected static final String TAG = "lookerror";
private TextView textViewoperation;
private TextView textViewresult;
private Button button0;
private Button button1;
private Button button2;
private Button button3;
private Button button4;
private Button button5;
private Button button6;
private Button button7;
private Button button8;
private Button button9;
private Button buttonc;
private Button buttoncel;
private Button buttondiv;
private Button buttonsum;
private Button buttonmul;
private Button buttonsub;
private Button buttonequal;
private Button buttondot;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewoperation = (TextView) this.findViewById(R.id.textView1);
textViewresult = (TextView) this.findViewById(R.id.textView2);
button0 = (Button) this.findViewById(R.id.button_0);
button1 = (Button) this.findViewById(R.id.button_1);
button2 = (Button) this.findViewById(R.id.button_2);
button3 = (Button) this.findViewById(R.id.button_3);
button4 = (Button) this.findViewById(R.id.button_4);
button5 = (Button) this.findViewById(R.id.button_5);
button6 = (Button) this.findViewById(R.id.button_6);
button7 = (Button) this.findViewById(R.id.button_7);
button8 = (Button) this.findViewById(R.id.button_8);
button9 = (Button) this.findViewById(R.id.button_9);
buttonc = (Button) this.findViewById(R.id.button_c);
buttoncel = (Button) this.findViewById(R.id.button_cel);
buttondiv = (Button) this.findViewById(R.id.button_div);
buttonsum = (Button) this.findViewById(R.id.button_sum);
buttonmul = (Button) this.findViewById(R.id.button_mul);
buttonsub = (Button) this.findViewById(R.id.button_sub);
buttonequal = (Button) this.findViewById(R.id.button_equal);
buttondot = (Button) this.findViewById(R.id.button_dot);
number_activity(button0,textViewoperation);
number_activity(button1,textViewoperation);
number_activity(button2,textViewoperation);
number_activity(button3,textViewoperation);
number_activity(button4,textViewoperation);
number_activity(button5,textViewoperation);
number_activity(button6,textViewoperation);
number_activity(button7,textViewoperation);
number_activity(button8,textViewoperation);
number_activity(button9,textViewoperation);
number_activity(buttondiv,textViewoperation);
number_activity(buttonsum,textViewoperation);
number_activity(buttonmul,textViewoperation);
number_activity(buttonsub,textViewoperation);
number_activity(buttondot,textViewoperation);
buttonequal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Double sum = null;
System.out.print(textViewoperation.getText());
String IP4 = "[0-9]*";
String[] ss = textViewoperation.getText().toString().split(IP4);
Pattern p = Pattern.compile("[+-/\\*]+");
Matcher m = p.matcher(textViewoperation.getText().toString());
String[] result = p.split(textViewoperation.getText().toString());
Pattern p2 = Pattern.compile("[0-9]+");
String[] result2 = p2.split(textViewoperation.getText().toString());
//String str= p.matcher(textViewoperation.getText().toString()).group();
//String str2=m.group();
sum = Double.valueOf(result[0])+Double.valueOf(result[1]);
textViewresult.setText(""+sum+ss[0]);
textViewoperation.setText("");
}
});
}
public void number_activity(final Button button,final TextView textview) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textview.append(button.getText());
}
});
}
@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;
}
}
布局段activity_main.xml源码如下:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/TableLayout1"
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" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button_c"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="c" />
<Button
android:id="@+id/button_div"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/" />
<Button
android:id="@+id/button_mul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*" />
<Button
android:id="@+id/button_cel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="cel" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="7" />
<Button
android:id="@+id/button_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="8" />
<Button
android:id="@+id/button_9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="9" />
<Button
android:id="@+id/button_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-" />
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="4" />
<Button
android:id="@+id/button_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5" />
<Button
android:id="@+id/button_6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="6" />
<Button
android:id="@+id/button_sum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+" />
</TableRow>
<TableRow
android:id="@+id/tableRow4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1" />
<Button
android:id="@+id/button_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2" />
<Button
android:id="@+id/button_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3" />
<Button
android:id="@+id/button_equal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="=" />
</TableRow>
<TableRow
android:id="@+id/tableRow5"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="%" />
<Button
android:id="@+id/button_0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0" />
<Button
android:id="@+id/button_dot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="." />
</TableRow>
</TableLayout>