Android设计实现一个简单计算器
作者:互联网
记录下自己写的作业
本来是用double类型的,有小数点的功能
但是经过老师的测试bug一堆,所以还是换成int了。
有小数点的有机会在实现吧
注释里面都有,写完我自己都不想看,希望以后还是能规范码字,该写成函数的写成函数
MainActivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
final String TAG = "zx";
//第一个数
int FirstNum = 0;
//第二个数
int SecondNum = 0;
//结果
int result = 0;
EditText editText1 = null;
EditText editText2 = null;
String text ="";
String text2 = "";
//判断是否是第一个数
Boolean isFirstNum = true;
//是否是 + 号
Boolean isAdd = false;
//是否是 - 号
Boolean isMinus = false;
// 是否是小数
Boolean isDecimal = false;
// 是否清屏
Boolean isClear = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText1 = (EditText)findViewById(R.id.editText1);
editText2 = (EditText)findViewById(R.id.editText2);
}
@Override
public void onClick(View v) {
if (v instanceof Button){
String text = ((Button)v).getText().toString();
switch (text) {
case "0" :
//判断是否需要清屏 如果计算后直接输入+号就不用清屏
if (isClear){
Clear();
}
//判断是不是第一个数
if (isFirstNum){
//如果等于第一位0则返回
if (FirstNum == 0){
break;
}else {
//不是第一位 则将第一个数×10
FirstNum *= 10;
text2 += text;
editText1.setText(text2);
}
} else {
//第二个数 同上
if (SecondNum == 0){
break;
}else {
SecondNum *= 10;
text2 += text;
editText1.setText(text2);
}
}
break;
case "1" :
case "2" :
case "3" :
case "4" :
case "5" :
case "6" :
case "7" :
case "8" :
case "9" :
//判断是否需要清屏
if (isClear){
Clear();
}
// 判断是不是第一个数
if (isFirstNum){
FirstNum *= 10 ;
FirstNum += Integer.parseInt(text);
Log.d(TAG, "onClick:FirstNum "+FirstNum);
text2 += text;
editText1.setText(text2);
} else {
SecondNum *= 10 ;
SecondNum += Integer.parseInt(text);
Log.d(TAG, "onClick:SecondNum "+SecondNum);
text2 += text;
editText1.setText(text2);
}
break;
case "+" :
//如果已经计算一次 ,且再次按了运算符号,则将上一次运算结果赋值给FirstNum,且不需要清屏
if (result !=0 && FirstNum ==0){
FirstNum = result;
isClear = false;
}
//如果多次按 + 号 无反应
if (isAdd == true){
//按了 - 号再按 + 号,则修改逻辑,并且将屏幕上的运算符号换成最新的
} else if (isMinus == true){
isMinus = false;
text2 = text2.substring(0,text2.length()-1);
text2 += text;
editText1.setText(text2);
isAdd = true;
isFirstNum = false;
} else {
//第一次按 + 号
isAdd = true;
isFirstNum = false;
text2 += text;
editText1.setText(text2);
}
break;
case "-" :
//逻辑同上
if (result !=0 && FirstNum ==0){
FirstNum = result;
isClear = false;
}
if (isMinus == true){
} else if (isAdd == true){
isAdd = false;
text2 = text2.substring(0,text2.length()-1);
text2 += text;
editText1.setText(text2);
isMinus = true;
isFirstNum = false;
} else {
isMinus = true;
isFirstNum = false;
text2 += text;
editText1.setText(text2);
}
break;
case "=" :
//如果都没有值 则不作计算
if (FirstNum == 0 && SecondNum == 0){
break;
}
if (isAdd){
result = FirstNum + SecondNum;
} else if (isMinus){
result = FirstNum - SecondNum;
}else {
if (FirstNum != 0){
result = FirstNum;
} else {
result = SecondNum;
}
}
FirstNum = 0;
SecondNum = 0;
isAdd = false;
isMinus = false;
isFirstNum = true;
isClear = true;
text2 = String.valueOf(result);
editText2.setText(String.valueOf(result));
break;
//清除数据
case "AC" :
text = "";
text2 = "";
FirstNum = 0;
SecondNum = 0;
editText1.setText(text);
editText2.setText(text);
isFirstNum = true;
isAdd = false;
isMinus = false;
isClear = true;
break;
}
}
}
//清空text2
public void Clear(){
text2 = "";
editText1.setText(text2);
isClear = false;
}
}
还是用笨办法给每个button设置了点击事件,老师的那种给所有控件设置监听然后在判断其类型是不是button还是不会,找了好多资料都不知道。。
布局文件
<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"
tools:context=".MainActivity"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:id="@+id/editText1"
android:editable="false"
android:textSize="50dp"
android:gravity="right"
android:background="@null"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:id="@+id/editText2"
android:editable="false"
android:textSize="65dp"
android:gravity="right"
android:background="@null"/>
<LinearLayout
android:id="@+id/linearLayout"
android:background="@color/black"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="3"
android:orientation="horizontal"
android:padding="5dp"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="2"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="7"
android:textSize="40dp"
android:onClick="onClick"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="8"
android:textSize="40dp"
android:onClick="onClick"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="9"
android:textSize="40dp"
android:onClick="onClick"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="4"
android:textSize="40dp"
android:onClick="onClick"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="5"
android:textSize="40dp"
android:onClick="onClick"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="6"
android:textSize="40dp"
android:onClick="onClick"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="1"
android:textSize="40dp"
android:onClick="onClick"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="2"
android:textSize="40dp"
android:onClick="onClick"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="3"
android:textSize="40dp"
android:onClick="onClick"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="0"
android:textSize="40dp"
android:onClick="onClick"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_margin="4dp"
android:text="."
android:textSize="40dp"
android:onClick="onClick"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="AC"
android:textSize="30dp"
android:onClick="onClick"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="-"
android:textSize="30dp"
android:onClick="onClick"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="+"
android:textSize="30dp"
android:onClick="onClick"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:text="="
android:textSize="30dp"
android:onClick="onClick"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
测试运行
标签:case,false,text,计算器,text2,简单,Android,true,FirstNum 来源: https://blog.csdn.net/big_face_catQAQ/article/details/122190575