安卓编写一个计算器

package com.yh.study01;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    TextView display;
    TextView resultTextView;
    String result = "";
    String conn = "";
    String firstNum = "";
    String secondNum = "";
    String oper = "";

    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        display = findViewById(R.id.display);
        resultTextView = findViewById(R.id.result);
        findViewById(R.id.clear).setOnClickListener(this);
        findViewById(R.id.neg).setOnClickListener(this);
        findViewById(R.id.mod).setOnClickListener(this);
        findViewById(R.id.div).setOnClickListener(this);
        findViewById(R.id.bt7).setOnClickListener(this);
        findViewById(R.id.bt8).setOnClickListener(this);
        findViewById(R.id.bt9).setOnClickListener(this);
        findViewById(R.id.mul).setOnClickListener(this);
        findViewById(R.id.bt4).setOnClickListener(this);
        findViewById(R.id.bt5).setOnClickListener(this);
        findViewById(R.id.bt6).setOnClickListener(this);
        findViewById(R.id.sub).setOnClickListener(this);
        findViewById(R.id.bt1).setOnClickListener(this);
        findViewById(R.id.bt2).setOnClickListener(this);
        findViewById(R.id.bt3).setOnClickListener(this);
        findViewById(R.id.add).setOnClickListener(this);
        findViewById(R.id.bt0).setOnClickListener(this);
        findViewById(R.id.pon).setOnClickListener(this);
        findViewById(R.id.equ).setOnClickListener(this);

    }


    public Double sum(String number1, String s, String number2) {
        Double num1 = (number1.isEmpty() || number1.equals(".") || number1.equals("-")) ? 0.0 : Double.valueOf(number1);
        Double num2 = (number2.isEmpty() || number2.equals(".") || number2.equals("-")) ? 0.0 : Double.valueOf(number2);
        switch (s) {
            case "+":
                oper = "+";
                return num1 + num2;
            case "-":
                oper = "-";
                return num1 - num2;
            case "X":
                oper = "X";
                return num1 * num2;
            case "÷":
                oper = "÷";
                return num1 / num2;
        }
        return 0.0;
    }

    @Override
    public void onClick(View view) {
        String s = ((Button) view).getText().toString();

        switch (view.getId()) {
            case R.id.mod:
                if (!firstNum.isEmpty() ) {
                    double calculatedResult = sum(firstNum, "÷", "100");
                    resultTextView.setText("="+calculatedResult);
                    firstNum = ""+calculatedResult;
                    result+="%";
                    secondNum="";
                    show(result);
                    
                }
                break;

            case R.id.neg:
                if (!firstNum.isEmpty() ) {
                    double calculatedResult = sum("1", "÷", firstNum);
                    resultTextView.setText("="+calculatedResult);
                    firstNum = ""+calculatedResult;
                    secondNum="";
                }
            case R.id.add:
            case R.id.sub:
            case R.id.mul:
            case R.id.div:
                char lastChar = result.isEmpty() ? '\0' : result.charAt(result.length() - 1);
                if (lastChar == 'X' || lastChar == '÷' || lastChar == '+' || lastChar == '-' || lastChar == '%') {
                    result = result.substring(0, result.length() - 1) + s;
                    oper = s;
                } else {
                    oper = s;
                    result += s;
                }
                show(result);
                break;
            case R.id.clear:
                clear();
                break;
            case R.id.equ:
                if (!firstNum.isEmpty() && !secondNum.isEmpty()) {
                    double calculatedResult = sum(firstNum, oper, secondNum);
                    resultTextView.setText("="+calculatedResult);
                    firstNum = ""+calculatedResult;
                    result=firstNum;
                    secondNum="";
                    oper="";
                }
                break;
            default:
                if (oper.isEmpty()) {
                    firstNum += s;
                } else {
                    secondNum += s;
                }
                result += s;
                show(result);
                break;
        }
    }



    public void show(String s) {
        display.setText(s);
    }

    public void clear() {
        try {
            firstNum = "";
            secondNum = "";
            result = "";
            oper = "";
            display.setText("");
            resultTextView.setText("");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:textSize="30dp"
        android:id="@+id/display"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:textSize="30dp"
        android:id="@+id/result"/>
    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:rowCount="5"
        android:columnCount="4">

        <Button android:text="AC" android:id="@+id/clear"/>
        <Button android:text="1/X" android:id="@+id/neg"/>
        <Button android:text="%" android:id="@+id/mod"/>
        <Button android:text="÷" android:id="@+id/div"/>

        <Button android:text="7" android:id="@+id/bt7"/>
        <Button android:text="8" android:id="@+id/bt8"/>
        <Button android:text="9" android:id="@+id/bt9"/>
        <Button android:text="X" android:id="@+id/mul"/>

        <Button android:text="4" android:id="@+id/bt4"/>
        <Button android:text="5" android:id="@+id/bt5"/>
        <Button android:text="6" android:id="@+id/bt6"/>
        <Button android:text="-" android:id="@+id/sub"/>

        <Button android:text="1" android:id="@+id/bt1"/>
        <Button android:text="2" android:id="@+id/bt2"/>
        <Button android:text="3" android:id="@+id/bt3"/>
        <Button android:text="+" android:id="@+id/add"/>
        <Button android:text="0" android:layout_columnSpan="2" android:layout_gravity="fill" android:id="@+id/bt0"/>
        <Button android:text="." android:id="@+id/pon"/>
        <Button android:text="=" android:id="@+id/equ"/>









    </GridLayout>


</LinearLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值