自学android也有断断续续的好些天了,试着做了一个简单的计算器小应用,直接放代码:
<pre name="code" class="java">package com.example.calculator;
import com.example.calculator.R;
import android.os.Bundle;
import android.app.Activity;
import android.text.InputType;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText showresult;
private Button b_dot, b_clear, b_equal;
int[] numberIDs = { R.id.one, R.id.two, R.id.three, R.id.four, R.id.five,
R.id.six, R.id.seven, R.id.eight, R.id.nine, R.id.zero };
int[] operatorIDs = { R.id.add, R.id.subtract, R.id.multiply, R.id.divide };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showresult = (EditText) findViewById(R.id.showresult);
showresult.setInputType(InputType.TYPE_NULL);
for (int i = 0; i < numberIDs.length; i++) {
findViewById(numberIDs[i]).setOnClickListener(new NumberListener());
}
for (int i = 0; i < operatorIDs.length; i++) {
findViewById(operatorIDs[i]).setOnClickListener(
new OperatorListener());
}
b_dot = (Button) findViewById(R.id.dot);
b_clear = (Button) findViewById(R.id.clear);
b_equal = (Button) findViewById(R.id.equal);
b_equal.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
calculate();
}
});
b_dot.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String s = showresult.getText().toString();
if (s.indexOf(".") > 0) {
if (s.indexOf("+") > s.indexOf(".")
|| s.indexOf("-") > s.indexOf(".")
|| s.indexOf("×") > s.indexOf(".")
|| s.indexOf("÷") > s.indexOf(".")) {
showresult.setText(s + b_dot.getText().toString());
}
} else if (s != "") {
showresult.setText(s + b_dot.getText().toString());
} else {
showresult.setText("");
}
showresult.setSelection(showresult.getText().length());
}
});
b_clear.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
showresult.setText("");
return false;
}
});
b_clear.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String s = showresult.getText().toString();
if (s == "") {
showresult.setText("");
} else {
showresult.setText(s.subSequence(0, s.length() - 1));
}
}
});
}
private void calculate(){
String s = showresult.getText().toString();
String[] opretors = {"+","-","×","÷"};
for (int i = 0; i < opretors.length; i++) {
String opretor = opretors[i];
if (s.indexOf(opretor)>0) {
String[] f = s.split(opretor);
if (f.length>1) {
Float f1 = Float.parseFloat(f[0]);
Float f2 = Float.parseFloat(f[1]);
Float result=0f;
if (opretor.equals("+")) {
result = f1 +f2;
}else if (opretor.equals("-")) {
result = f1 - f2;
}else if (opretor.equals("×")) {
result = f1 * f2;
}else if(opretor.equals("÷")){
if (f2 == 0) {
Toast t = Toast.makeText(MainActivity.this, "除数不能为0!",
Toast.LENGTH_LONG);
t.show();
} else {
result = f1 / f2;
showresult.setText(result.toString());
}
}
showresult.setText(result.toString());
}
}
}
}
class NumberListener implements OnClickListener {
@Override
public void onClick(View v) {
String s = showresult.getText().toString();
showresult.setText(s + ((Button) v).getText().toString());
showresult.setSelection(showresult.getText().length());
}
}
class OperatorListener implements OnClickListener {
@Override
public void onClick(View v) {
String s = showresult.getText().toString();
if (s.equals("")) {
showresult.setText("");
} else if (s.indexOf("-") > 0 || s.indexOf("×") > 0
|| s.indexOf("+") > 0 || s.indexOf("÷") > 0) {
calculate();
} else {
showresult.setText(s + ((Button) v).getText());
}
showresult.setSelection(showresult.getText().length());
}
}
}
放上截图(本人偏爱暗色调,别吐槽等号的大小
![尴尬](http://static.blog.csdn.net/xheditor/xheditor_emot/default/awkward.gif)
bug什么的应该没有了吧~~