package com.example.calapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button btn_0 ;
Button btn_1;
Button btn_2;
Button btn_3 ;
Button btn_4 ;
Button btn_5 ;
Button btn_6 ; //数字按钮
Button btn_7 ;
Button btn_8 ;
Button btn_9 ;
Button btn_point ; //小数点按钮
Button btn_clear ;
Button btn_del ;
Button btn_pluse ;
Button btn_minus ;
Button btn_multiply ;
Button btn_divide ;
Button btn_equle ;
EditText et_input ;//显示结果
boolean clear_flag ;//清空标识
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_0 = (Button) findViewById(R.id.btn_0) ;
btn_1 = (Button) findViewById(R.id.btn_1) ;
btn_2 = (Button) findViewById(R.id.btn_2) ;
btn_3 = (Button) findViewById(R.id.btn_3) ;
btn_4 = (Button) findViewById(R.id.btn_4) ;
btn_5 = (Button) findViewById(R.id.btn_5) ;
btn_6 = (Button) findViewById(R.id.btn_6) ;
btn_7 = (Button) findViewById(R.id.btn_7) ;
btn_8 = (Button) findViewById(R.id.btn_8) ;
btn_9 = (Button) findViewById(R.id.btn_9) ;
btn_point = (Button) findViewById(R.id.btn_point) ;
btn_clear = (Button) findViewById(R.id.btn_clear) ;
btn_del = (Button) findViewById(R.id.btn_del) ;
btn_pluse = (Button) findViewById(R.id.btn_pluse) ;
btn_minus = (Button) findViewById(R.id.btn_minus) ;
btn_multiply = (Button) findViewById(R.id.btn_multiply) ;
btn_divide = (Button) findViewById(R.id.btn_divide) ;
btn_equle = (Button) findViewById(R.id.btn_equal) ;
//以上实例化按钮
et_input = (EditText) findViewById(R.id.et_input); //实例化之后的显示屏
btn_0.setOnClickListener(this);
btn_1.setOnClickListener(this);
btn_2.setOnClickListener(this);
btn_3.setOnClickListener(this);
btn_4.setOnClickListener(this);
btn_5.setOnClickListener(this);
btn_6.setOnClickListener(this);
btn_7.setOnClickListener(this);
btn_8.setOnClickListener(this);
btn_9.setOnClickListener(this);
btn_point.setOnClickListener(this);
btn_clear.setOnClickListener(this);
btn_del.setOnClickListener(this);
btn_pluse.setOnClickListener(this);
btn_minus.setOnClickListener(this);
btn_multiply.setOnClickListener(this);
btn_divide.setOnClickListener(this);
btn_equle.setOnClickListener(this);
//设置以上按钮的点击事件
}
@Override
public void onClick(View v) {//完成监听
String str = et_input.getText().toString();//获取文本框的文本
switch (v.getId()) {
case R.id.btn_0:
case R.id.btn_1:
case R.id.btn_2:
case R.id.btn_3:
case R.id.btn_4:
case R.id.btn_5:
case R.id.btn_6:
case R.id.btn_7:
case R.id.btn_8:
case R.id.btn_9:
case R.id.btn_point:
if (clear_flag) {//若清除标志位为1
clear_flag =false ;
str ="" ;//将文本框的文本置为空
et_input.setText("");
}
et_input.setText(str + ((Button)v).getText());//如果清除标志不为1 则获取button上的数字文本
break ;
case R.id.btn_pluse:
case R.id.btn_minus:
case R.id.btn_multiply:
case R.id.btn_divide:
if (clear_flag) {//若清除标志位为1
clear_flag =false ;
str ="" ;
et_input.setText("");
}//将文本框的文本置为空
et_input.setText(str+ " " + ((Button)v).getText()+" ");//如果清除标志不为1 则获取button上的符号文本
break;
case R.id.btn_del:
if (clear_flag) {
clear_flag =false ;
str ="" ;
et_input.setText("");
}else if (str!=null&&!str.equals("")){//如果文本中不为空且为数字时候此时删除
et_input.setText(str.substring(0,str.length()-1));//将文本中的文本长度减一 并将减去的数字置为0
}
break;
case R.id.btn_clear:
clear_flag =false ;
str ="" ;//若按下的键是清除键,则将清除标志置为false 且将文本置为空
et_input.setText("");
case R.id.btn_equal:
getResult();//若按下的键为=调用计算函数
break ;
}
}
/* 单独的调用运算结果
*
*
* */
private void getResult(){//计算函数
String exp = et_input.getText().toString();//获取当前文本的数据
if (exp == null||exp.equals("")){
return;
}
if(!exp.contains(" ")) {//判断字符串中是否有子字符串
return;
}
if (clear_flag){
clear_flag = false ;
return;//当前文本为空,返回空
//若此时的清零标志为true 则重置 返回空
}
clear_flag = true ;//重置清零位
double result = 0 ;
String s1 = exp.substring(0,exp.indexOf(" ")); //第一个参数int为开始的索引,对应String数字中的开始位置,
// 第二个参数是截止的索引位置,对应String中的结束位置 此处获取第一位操作数
String op = exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2) ;//运算符
String s2 = exp.substring(exp.indexOf(" ")+3) ;//获取第二位操作数
if (!s1.equals("")&&!s2.equals("")){//当两位操作数均不为空时
double d1 = Double.parseDouble(s1) ;
double d2 = Double.parseDouble(s2) ;//将数字转换为double
if (op.equals("+")){
result = d1 + d2 ;//如果操作符为+
}else if (op.equals("-")){
result = d1 - d2 ;//如果操作符为-
}else if (op.equals("*")){
result = d1 * d2 ;//如果操作符为*
}else if (op.equals("/")){////如果操作符为/
if(d2 == 0){
result = 0 ;
}else {
result = d1/d2 ;
}
}
et_input.setText(result+"");
}//两个数字均不为空的情况结束
else if (!s1.equals("")&&s2.equals("")){//当第一个操作数为不为空 第二个操作数为空时
//et_input.setText(exp);//直接返回该第一个操作数字
double d1 = Double.parseDouble(s1) ;
if (op.equals("+")){
result = d1 ;//根据操作符加减乘除
}else if (op.equals("-")){
result = d1;
}else if (op.equals("*")){
result = d1 ;
}else if (op.equals("/")){
result = d1;
}
et_input.setText(result+"");
}//第一个操作数不为空 第二个操作数为空的情况结束
else if (s1.equals("")&&!s2.equals("")){//当第一个操作数为空 第二个操作数不为空
double d2 = Double.parseDouble(s2) ;
if (op.equals("+")){
result = 0 + d2 ;//根据操作符加减乘除
}else if (op.equals("-")){
result = 0 - d2 ;
}else if (op.equals("*")){
result = 0 ;
}else if (op.equals("/")){
没有合适的资源?快使用搜索试试~ 我知道了~
Android 课程设计-计算器app 做了界面的美化和按钮的变色,高分课程设计,可一键运行
共48个文件
xml:18个
png:10个
jpg:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 161 浏览量
2023-12-20
18:21:34
上传
评论
收藏 1.26MB ZIP 举报
温馨提示
Android 课程设计-计算器app 做了界面的美化和按钮的变色,高分课程设计,可一键运行 - 运行中有什么问题可以私聊博主,本人高级安卓工程师,主页置顶有常见爆红解决的方法 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
资源推荐
资源详情
资源评论
收起资源包目录
CalApplication-master.zip (48个子文件)
CalApplication-master
gradle.properties 728B
gradle
wrapper
gradle-wrapper.jar 53KB
gradle-wrapper.properties 200B
app
src
androidTest
java
com
example
calapplication
ExampleInstrumentedTest.java 736B
test
java
com
example
calapplication
ExampleUnitTest.java 387B
main
java
com
example
calapplication
MainActivity.java 8KB
res
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 6KB
mipmap-hdpi
ic_launcher_round.png 5KB
ic_launcher.png 3KB
drawable-v24
ic_launcher_foreground.xml 2KB
mipmap-anydpi-v26
ic_launcher.xml 272B
ic_launcher_round.xml 272B
mipmap-mdpi
ic_launcher_round.png 3KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 15KB
ic_launcher.png 9KB
mipmap-xhdpi
ic_launcher_round.png 7KB
ic_launcher.png 4KB
values
dimens.xml 157B
colors.xml 348B
strings.xml 180B
styles.xml 383B
layout
activity_main.xml 9KB
drawable
ic_launcher_background.xml 5KB
edit_bg.xml 590B
pray_shap.xml 974B
qianxi06.jpg 58KB
login_button_selector.xml 1003B
qianxi05.jpg 571KB
button_circle_shape.xml 1KB
qianxi01.jpg 281KB
qianxi04.jpeg 68KB
qianxi02.jpg 76KB
qianxi03.jpg 130KB
AndroidManifest.xml 729B
proguard-rules.pro 751B
build.gradle 938B
.gitignore 7B
gradlew.bat 2KB
build.gradle 546B
.idea
codeStyles
Project.xml 2KB
runConfigurations.xml 564B
misc.xml 357B
gradle.xml 626B
settings.gradle 15B
gradlew 5KB
.gitignore 176B
共 48 条
- 1
资源评论
.Android安卓科研室.
- 粉丝: 4299
- 资源: 2393
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功