package com.example.mytest;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class exam extends AppCompatActivity {
private Button[] btnnum = new Button[11];
private Button[] btnop = new Button[13];
private TextView text = null;
private Button btnclear = null;
private static String op;
private boolean clear;
private double result;
public exam() {
result = 0;
clear = false;
op = "=";
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exam);
//获取数字
btnnum[0] = (Button) findViewById(R.id.s0);
btnnum[1] = (Button) findViewById(R.id.s1);
btnnum[2] = (Button) findViewById(R.id.s2);
btnnum[3] = (Button) findViewById(R.id.s3);
btnnum[4] = (Button) findViewById(R.id.s4);
btnnum[5] = (Button) findViewById(R.id.s5);
btnnum[6] = (Button) findViewById(R.id.s6);
btnnum[7] = (Button) findViewById(R.id.s7);
btnnum[8] = (Button) findViewById(R.id.s8);
btnnum[9] = (Button) findViewById(R.id.s9);
//获取操作符
btnop[0] = (Button) findViewById(R.id.Percentage);
btnop[1] = (Button) findViewById(R.id.CE);
btnop[2] = (Button) findViewById(R.id.C);
btnop[3] = (Button) findViewById(R.id.DEL);
btnop[4] = (Button) findViewById(R.id.x1);
btnop[5] = (Button) findViewById(R.id.x2);
btnop[7] = (Button) findViewById(R.id.x3);
btnop[8] = (Button) findViewById(R.id.divide);
btnop[9] = (Button) findViewById(R.id.multiply);
btnop[10] = (Button) findViewById(R.id.subtract);
btnop[11] = (Button) findViewById(R.id.plus);
btnop[12] = (Button) findViewById(R.id.complex);
btnop[13] = (Button) findViewById(R.id.outcomn);
//初始化显示界面
text = (TextView) findViewById(R.id.show);
text.setText("0.0");
//实例化监听对象
NumberAction na = new NumberAction();
opAction oa = new opAction();
for (Button bc : btnop) {
bc.setOnClickListener((View.OnClickListener) oa);
}
for (Button bc : btnnum) {
bc.setOnClickListener((View.OnClickListener) na);
}
//cleard的动作
btnclear = (Button) findViewById(R.id.CE);
btnclear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
text.setText("0.0");
result = 0;
clear = false;
op = "=";
}
});
}
//数字的监听动作
private class NumberAction implements View.OnClickListener{
@Override
public void onClick(View v){
Button btn = (Button) v;
String input = btn.getText().toString();
if (clear){
text.setText("");
clear=false;
}
text.setText(text.getText().toString() + input);
}
}
//操作符的监听动作
public class opAction implements View.OnClickListener {
@Override
public void onClick(View v) {
Button btn = (Button) v;
String inputop = (String) btn.getText();
if (!clear) {//调用计算方法
calculate(Double.parseDouble(text.getText().toString()));
}
//保存操作符
op = inputop;
clear = true;
}
}
public void calculate(double x) {
if (op.equals("+")) {
result += x;
} else if (op.equals("-")) {
result -= x;
} else if (op.equals("*")) {
result *= x;
} else if (op.equals("/")) {
result /= x;
} else if (op.equals("%")) {
result = x / 100;
} else if (op.equals("1/x")) {
result = 1 / x;
} else if (op.equals("x2")) {
result = x * x;
} else if (op.equals("²√x")) {
double k = 1;
while (Math.abs(k * k - x) > 1e-5) {
k = (k + x / k) / 2;
result = k;
}
text.setText("" + result);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".exam"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="350dp"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="150dp"
android:text="0.0"
android:gravity="right"
/>
</LinearLayout>
<LinearLayout
android:layout_width="350dp"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/Percentage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="%"
>
</Button>
<Button
android:id="@+id/CE"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="CE"
>
</Button>
<Button
android:id="@+id/C"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="C"
>
</Button>
<Button
android:id="@+id/DEL"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="DEL"
>
</Button>
</LinearLayout>
<LinearLayout
android:layout_width="350dp"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/x1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1/x"
>
</Button>
<Button
android:id="@+id/x2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="x2"
>
</Button>
<Button
android:id="@+id/x3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="²√x"
>
</Button>
<Button
android:id="@+id/divide"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="/"
>
</Button>
</LinearLayout>
<LinearLayout
android:layout_width="350dp"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/s7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="7"
>
</Button>
<Button
android:id="@+id/s8"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="8"
>
</Button>
<Button
android:id="@+id/s9"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="9"
>
</Button>
<Button
android:id="@+id/multiply"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="*"
>
</Button>
</LinearLayout>
<LinearLayout
android:layout_width="350dp"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/s4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="4"
>
</Button>
<Button
android:id="@+id/s5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="5"
>
</Button>
<Button
android:id="@+id/s6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="6"
>
</Button>
<Button
android:id="@+id/subtract"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="-"
>
</Button>
</LinearLayout>
<LinearLayout
android:layout_width="350dp"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/s1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1"
>
</Button>
<Button
android:id="@+id/s2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2"
>
</Button>
<Button
android:id="@+id/s3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="3"
>
</Button>
<Button
android:id="@+id/add"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+"
>
</Button>
</LinearLayout>
<LinearLayout
android:layout_width="350dp"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/complex"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+/-"
>
</Button>
<Button
android:id="@+id/s0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="0"
>
</Button>
<Button
android:id="@+id/xiaoshudian"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="."
>
</Button>
<Button
android:id="@+id/outcomn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="="
>
</Button>
</LinearLayout>
</LinearLayout>
```可以帮忙找一下错误嘛,路径没问题,应该是代码哪里有错了。