andriod studio实现简单计算器代码

时间: 2023-07-26 19:03:33 浏览: 45
以下是一个简单的 Android Studio 计算器应用程序的代码: 首先,在 activity_main.xml 文件中添加以下代码: ```xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.calculator.MainActivity"> <TextView android:id="@+id/resultTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="20dp" android:gravity="center
相关问题

Android studio实现科学计算器代码

以下是一个简单的科学计算器的 Android Studio 代码实现示例: 1. 首先,在 XML 布局文件中创建一个包含所有按钮的界面。 ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:inputType="text" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/button_sin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="sin" /> <Button android:id="@+id/button_cos" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="cos" /> <Button android:id="@+id/button_tan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="tan" /> <Button android:id="@+id/button_pow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="^" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <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_divide" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="/" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <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_multiply" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="*" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <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_minus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="-" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/button_0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0" /> <Button android:id="@+id/button_clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="C" /> <Button android:id="@+id/button_dot" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="." /> <Button android:id="@+id/button_plus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="+" /> </LinearLayout> <Button android:id="@+id/button_equal" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="=" /> </LinearLayout> ``` 2. 在 Activity 中实现所有按钮的点击事件并处理计算逻辑。 ```java import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private EditText editText; private double value1 = Double.NaN; private double value2; private static final String ADDITION = "+"; private static final String SUBTRACTION = "-"; private static final String MULTIPLICATION = "*"; private static final String DIVISION = "/"; private String CURRENT_ACTION; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = findViewById(R.id.editText); Button button0 = findViewById(R.id.button_0); Button button1 = findViewById(R.id.button_1); Button button2 = findViewById(R.id.button_2); Button button3 = findViewById(R.id.button_3); Button button4 = findViewById(R.id.button_4); Button button5 = findViewById(R.id.button_5); Button button6 = findViewById(R.id.button_6); Button button7 = findViewById(R.id.button_7); Button button8 = findViewById(R.id.button_8); Button button9 = findViewById(R.id.button_9); Button buttonDot = findViewById(R.id.button_dot); Button buttonClear = findViewById(R.id.button_clear); Button buttonPlus = findViewById(R.id.button_plus); Button buttonMinus = findViewById(R.id.button_minus); Button buttonMultiply = findViewById(R.id.button_multiply); Button buttonDivide = findViewById(R.id.button_divide); Button buttonEqual = findViewById(R.id.button_equal); Button buttonSin = findViewById(R.id.button_sin); Button buttonCos = findViewById(R.id.button_cos); Button buttonTan = findViewById(R.id.button_tan); Button buttonPow = findViewById(R.id.button_pow); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setText(editText.getText() + "1"); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setText(editText.getText() + "2"); } }); button3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setText(editText.getText() + "3"); } }); button4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setText(editText.getText() + "4"); } }); button5.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setText(editText.getText() + "5"); } }); button6.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setText(editText.getText() + "6"); } }); button7.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setText(editText.getText() + "7"); } }); button8.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setText(editText.getText() + "8"); } }); button9.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setText(editText.getText() + "9"); } }); button0.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setText(editText.getText() + "0"); } }); buttonDot.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setText(editText.getText() + "."); } }); buttonClear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { value1 = Double.NaN; value2 = Double.NaN; editText.setText(""); } }); buttonPlus.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { computeCalculation(); CURRENT_ACTION = ADDITION; editText.setText(String.valueOf(value1) + "+"); } }); buttonMinus.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { computeCalculation(); CURRENT_ACTION = SUBTRACTION; editText.setText(String.valueOf(value1) + "-"); } }); buttonMultiply.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { computeCalculation(); CURRENT_ACTION = MULTIPLICATION; editText.setText(String.valueOf(value1) + "*"); } }); buttonDivide.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { computeCalculation(); CURRENT_ACTION = DIVISION; editText.setText(String.valueOf(value1) + "/"); } }); buttonEqual.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { computeCalculation(); editText.setText(String.valueOf(value1)); value1 = Double.NaN; } }); buttonSin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { double value = Double.parseDouble(editText.getText().toString()); double result = Math.sin(Math.toRadians(value)); editText.setText(String.valueOf(result)); } }); buttonCos.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { double value = Double.parseDouble(editText.getText().toString()); double result = Math.cos(Math.toRadians(value)); editText.setText(String.valueOf(result)); } }); buttonTan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { double value = Double.parseDouble(editText.getText().toString()); double result = Math.tan(Math.toRadians(value)); editText.setText(String.valueOf(result)); } }); buttonPow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { computeCalculation(); CURRENT_ACTION = "pow"; editText.setText(String.valueOf(value1) + "^"); } }); } private void computeCalculation() { if (!Double.isNaN(value1)) { value2 = Double.parseDouble(editText.getText().toString()); if (CURRENT_ACTION == ADDITION) value1 = this.value1 + value2; else if (CURRENT_ACTION == SUBTRACTION) value1 = this.value1 - value2; else if (CURRENT_ACTION == MULTIPLICATION) value1 = this.value1 * value2; else if (CURRENT_ACTION == DIVISION) value1 = this.value1 / value2; else if (CURRENT_ACTION == "pow") value1 = Math.pow(value1, value2); } else { try { value1 = Double.parseDouble(editText.getText().toString()); } catch (Exception e) { } } } } ``` 这样,你就可以运行该应用程序并使用该科学计算器进行计算了。

android studio实现简易计算器

### 回答1: 好的,下面是简易计算器的实现步骤: 1. 创建一个新的Android Studio项目,并在布局文件中添加一个TextView和多个Button。 2. 在MainActivity.java文件中,定义一个字符串变量来存储用户输入的数字和操作符,并在每个按钮的点击事件中更新该变量。 3. 创建一个名为calculate()的方法,该方法将用户输入的字符串解析为数字和操作符,并执行相应的计算。最后,将结果显示在TextView中。 4. 在每个按钮的点击事件中调用calculate()方法,以便在用户按下“=”按钮时执行计算。 5. 运行应用程序并测试它是否按预期工作。 希望这能帮助到你! ### 回答2: Android Studio 是常用的Android应用程序开发环境,利用该工具可以开发完整的Android应用程序,其中也包括实现简易计算器。下面我们就来介绍如何通过 Android Studio 实现简易计算器。 1.创建新的Android项目:我们打开Android Studio,选择“Start a new Android Studio project”,该选项将指导我们创建一个新的Android项目。 2.设计用户界面:我们需要使用XML文件描述计算器的用户界面,主要包含数字、运算符等键,在这里,我们需要利用Android提供的界面设计工具 -- Android Studio Design View 。 3.编写Java代码:在Android Studio中,Java代码对应着Java类文件,因此我们需要新建一个类文件,将所有的计算逻辑代码编写在其中。 4.添加计算器逻辑:我们需要编写代码,实现基本运算:加、减、乘、除、取余等。 5.添加响应事件:我们需要为计算器中的数字、运算符等键添加响应事件,实现点击后数字和运算符的显示。 6.测试程序:我们需要在模拟器或者真机上测试我们开发的计算器程序,保证其在使用时可以正常运行。 综上所述,通过以上步骤,我们可以利用Android Studio实现一个简单的计算器。编写一个计算器的过程中,需要了解常见的布局,如LinearLayout、RelativeLayout等,并可以利用著名的MVP模式,将View与Presenter分离,提高代码的可读性和可维护性。此外,还需要掌握如何实现适应不同分辨率的布局,保证在各种机型上都能够良好地运行。 ### 回答3: Android Studio 是一款强大的 Android 应用开发软件,可以帮助我们创建各种 Android 应用,包括计算器应用。下面将详细介绍如何利用 Android Studio 实现简易计算器。 第一步:创建项目 在 Android Studio 中点击“Start a new Android Studio project”,选择一个名字和保存路径,接着选择 Empty Activity,点击“Finish”创建项目。 第二步:设计计算器界面 在 activity_main.xml 文件中,我们可以选择布局元素创建界面。在这里,我们使用LinearLayout作为容器,从而创建我们的界面元素。具体的代码如下: ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:layout_marginBottom="20dp" android:background="@color/cardview_dark_background" android:gravity="right" android:textAppearance="?android:textAppearanceLarge" android:textColor="@color/white" android:textSize="50sp" android:textStyle="bold" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="4" > <Button android:id="@+id/btn_clear" android:layout_width="0dp" android:layout_height="80dp" android:layout_weight="1" android:background="@color/cardview_dark_background" android:text="C" android:textAllCaps="false" android:textAppearance="?android:textAppearanceLarge" android:textColor="@color/white" android:textSize="20sp" /> ...... </LinearLayout> </LinearLayout> ``` 这里我们用 LinearLayout 创建一个垂直方向的布局,然后再在垂直布局中用 LinearLayout 创建一个水平方向的布局。在这个水平方向的布局中添加数值、运算符和清除按钮,具体代码如下: ``` <Button android:id="@+id/btn_clear" android:layout_width="0dp" android:layout_height="80dp" android:layout_weight="1" android:background="@color/cardview_dark_background" android:text="C" android:textAllCaps="false" android:textAppearance="?android:textAppearanceLarge" android:textColor="@color/white" android:textSize="20sp" /> <TextView android:id="@+id/btn_divide" android:layout_width="0dp" android:layout_height="80dp" android:layout_weight="1" android:background="@color/cardview_dark_background" android:gravity="center" android:text="/" android:textAppearance="?android:textAppearanceLarge" android:textColor="@color/white" android:textSize="20sp" /> <Button android:id="@+id/btn_multiply" android:layout_width="0dp" android:layout_height="80dp" android:layout_weight="1" android:background="@color/cardview_dark_background" android:text="*" android:textAllCaps="false" android:textAppearance="?android:textAppearanceLarge" android:textColor="@color/white" android:textSize="20sp" /> ...... ``` 第三步:实现计算器逻辑 在 MainActivity 类中实现计算器的逻辑。首先,我们需要定义一个数字输入框(TextView)用来显示操作数,同时在代码中对输入数字和操作符进行处理,并显示结果。 具体代码如下: ``` public class MainActivity extends AppCompatActivity { private TextView tvInput; private String lastOperator = ""; private double operand1 = Double.NaN; private double operand2; private final char ADDITION = '+'; private final char SUBTRACTION = '-'; private final char MULTIPLICATION = '*'; private final char DIVISION = '/'; private final char EQUALS = '='; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvInput = findViewById(R.id.tv_input); tvInput.setText(""); } public void onButtonClick(View view){ Button btn = (Button)view; String str = btn.getText().toString(); if(str.equals("C")){ tvInput.setText(""); lastOperator=""; operand1=Double.NaN; }else if(str.equals("+/-")){ double value = Double.parseDouble(tvInput.getText().toString()); value = -value; tvInput.setText(String.valueOf(value)); }else if(str.equals("%")){ if(lastOperator.equals("") && !tvInput.getText().toString().equals("")){ double value = Double.parseDouble(tvInput.getText().toString()); value = value/100; tvInput.setText(String.valueOf(value)); } }else if(str.equals(".")){ if(lastOperator.equals("") && !tvInput.getText().toString().contains(".")){ tvInput.append("."); } }else if(isOperator(str.charAt(0))){ if(!lastOperator.equals("") && tvInput.getText().toString().equals("")){ return; } if(Double.isNaN(operand1)){ operand1 = Double.parseDouble(tvInput.getText().toString()); }else{ operand2 = Double.parseDouble(tvInput.getText().toString()); switch(lastOperator){ case "+": operand1 = operand1 + operand2; break; case "-": operand1 = operand1 - operand2; break; case "*": operand1 = operand1 * operand2; break; case "/": operand1 = operand1 / operand2; break; case "=": break; } } lastOperator = String.valueOf(str.charAt(0)); tvInput.setText(""); }else if(str.equals("=")){ if(lastOperator.equals("")) return; if(Double.isNaN(operand1)){ operand1 = Double.parseDouble(tvInput.getText().toString()); }else{ operand2 = Double.parseDouble(tvInput.getText().toString()); switch(lastOperator){ case "+": operand1 = operand1 + operand2; break; case "-": operand1 = operand1 - operand2; break; case "*": operand1 = operand1 * operand2; break; case "/": operand1 = operand1 / operand2; break; case "=": break; } } lastOperator = "="; tvInput.setText(String.valueOf(operand1)); operand1 = Double.NaN; }else{ tvInput.append(str); } } public boolean isOperator(char c){ return (c==ADDITION || c==SUBTRACTION || c== MULTIPLICATION || c == DIVISION); } } ``` 在这个代码中,“C”按钮可以清除所有输入,“+/-”按钮可以将数字转换成负数,“%”按钮可以将数字转换成百分数,“.”按钮可以添加小数点,“=”按钮可以计算输入并输出结果。 最后,在 mainifests/AndroidManifest.xml 文件中增加声明,以允许用户在应用内打开横屏模式。 ``` <activity android:name=".MainActivity" android:screenOrientation="sensorLandscape"> </activity> ``` 现在我们已经创建了一个简单的计算器应用程序。当用户在应用中输入一个算术表达式,该程序会自动计算结果并在应用窗口中显示这个结果。当然,这还只是计算器的基本功能,您还可以添加各种其他功能,如科学计算器等等。希望这篇文章能够帮助你了解如何使用 Android Studio 来实现一个简单的计算器。

相关推荐

最新推荐

recommend-type

Android Studio实现简易计算器(表格布局TableLayout)

主要为大家详细介绍了Android Studio实现简易计算器,表格布局TableLayout,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

天然气汽车供气系统减压装置毕业设计(cad+设计方案).zip

天然气汽车供气系统减压装置毕业设计(cad+设计方案)
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解答下列问题:S—>S;T|T;T—>a 构造任意项目集规范族,构造LR(0)分析表,并分析a;a

对于这个文法,我们可以构造以下项目集规范族: I0: S -> .S S -> .T T -> .a I1: S -> S. [$ T -> T. [$ I2: S -> T. I3: S -> S.;S S -> S.;T T -> T.;a 其中,点(.)表示已经被扫描过的符号,;$表示输入串的结束符号。 根据项目集规范族,我们可以构造出LR(0)分析表: 状态 | a | $ ---- | - | - I0 | s3| I1 | |acc I2 | | 其中s3表示移进到状态3,acc表示接受。在分析字符串a;a时,我们可以按照以下步骤进行
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这
recommend-type

mac上和window原生一样的历史剪切板工具有什么

好的,我明白了您的要求。关于您的问题,为使Mac与Windows的历史剪切板功能类似,可以使用第三方工具"CopyClip"、"Alfred"、"Clipboard Manager"等。这些工具可以记录您复制到剪切板的所有内容,而不仅仅是最后一次复制。同时,它们还可以进行搜索和过滤,以便您更快地找到需要的内容。希望这能回答您的问题。