APP-计算器

在网课上学习了计算器的制作方法,并自己做了小常识,看完一便后,感觉自己会了,思想也明白了,但是当关掉视频真正开始做的时候会发向许多的问题,自己在前的好多语法用的并不是很熟练,但是反复的查阅资料,观看教程,还是可以完成完成这个项目的开发。

activity_main.xml:

<?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="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tvScreen"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:gravity="right"
        android:textAppearance="?android:attr/textAppearanceLarge"/>

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <Button
                android:id="@+id/btn1"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="1" />
            <Button
                android:id="@+id/btn2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="2"
                android:layout_weight="1"/>
            <Button
                android:id="@+id/btn3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="3"
                android:layout_weight="1"/>
            <Button
                android:id="@+id/btnAdd"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="+"
                android:layout_weight="1"/>

        </TableRow>
        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <Button
                android:id="@+id/btn4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="4"
                android:layout_weight="1"/>
            <Button
                android:id="@+id/btn5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="5"
                android:layout_weight="1"/>
            <Button
                android:id="@+id/btn6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="6"
                android:layout_weight="1"/>
            <Button
                android:id="@+id/btnSub"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="-"
                android:layout_weight="1"/>

        </TableRow>
        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <Button
                android:id="@+id/btn7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="7"
                android:layout_weight="1"/>
            <Button
                android:id="@+id/btn8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="8"
                android:layout_weight="1"/>
            <Button
                android:id="@+id/btn9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="9"
                android:layout_weight="1"/>
            <Button
                android:id="@+id/btnX"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="*"
                android:layout_weight="1"/>

        </TableRow>
        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <Button
                android:id="@+id/btnClear"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="C"
                android:layout_weight="1"/>
            <Button
                android:id="@+id/btn0"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0"
                android:layout_weight="1"/>
            <Button
                android:id="@+id/btnResult"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="="
                android:layout_weight="1"/>
            <Button
                android:id="@+id/btnDiv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="/"
                android:layout_weight="1"/>

        </TableRow>
    </TableLayout>

</LinearLayout>

MainActivity.java:

package com.example.counte;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private TextView tvScrean;
    private List<item> items=new ArrayList<item>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvScrean=(TextView)findViewById((R.id.tvScreen));
        findViewById(R.id.btn0).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btn1).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btn2).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btn3).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btn4).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btn5).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btn6).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btn7).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btn8).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btn9).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btnAdd).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btnSub).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btnX).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btnDiv).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btnClear).setOnClickListener((View.OnClickListener) this);
        findViewById(R.id.btnResult).setOnClickListener((View.OnClickListener) this);


    }


    public void onClick(View v){
        switch (v.getId()){
            case R.id.btn0:
                tvScrean.append("0");
                break;
            case R.id.btn1:
                tvScrean.append("1");
                break;
            case R.id.btn2:
                tvScrean.append("2");
                break;
            case R.id.btn3:
                tvScrean.append("3");
                break;
            case R.id.btn4:
                tvScrean.append("4");
                break;
            case R.id.btn5:
                tvScrean.append("5");
                break;
            case R.id.btn6:
                tvScrean.append("6");
                break;
            case R.id.btn7:
                tvScrean.append("7");
                break;
            case R.id.btn8:
                tvScrean.append("8");
                break;
            case R.id.btn9:
                tvScrean.append("9");
                break;
            case R.id.btnAdd:
                items.add(new item(Double.parseDouble(tvScrean.getText().toString()),Types.Num));
                check();
                items.add(new item(0,Types.Add));
                tvScrean.setText("");//清空文本
                break;
            case R.id.btnSub:
                items.add(new item(Double.parseDouble(tvScrean.getText().toString()),Types.Num));
                check();
                items.add(new item(0,Types.Sub));
                tvScrean.setText("");//清空文本
                break;
            case R.id.btnX:
                items.add(new item(Double.parseDouble(tvScrean.getText().toString()),Types.Num));
                check();
                items.add(new item(0,Types.X));
                tvScrean.setText("");//清空文本
                break;
            case R.id.btnDiv:
                items.add(new item(Double.parseDouble(tvScrean.getText().toString()),Types.Num));
                check();
                items.add(new item(0,Types.Div));
                tvScrean.setText("");//清空文本
                break;
            case R.id.btnClear:
                tvScrean.setText("");
                items.clear();//数组清空
                break;
            case R.id.btnResult:
                items.add(new item(Double.parseDouble(tvScrean.getText().toString()),Types.Num));
                check();
                tvScrean.setText(items.get(0).value+"");
                items.clear();//清空数组
                break;

        }
    }
    public void check(){
        if(items.size()>=3){

            double a=items.get(0).value;
            double b=items.get(2).value;
            int opt=items.get(1).type;

            items.clear();

            switch (opt){
                case Types.Add:
                    items.add(new item(a+b,Types.Num));
                    break;
                case Types.Sub:
                    items.add(new item(a-b,Types.Num));
                    break;
                case Types.X:
                    items.add(new item(a*b,Types.Num));
                    break;
                case Types.Div:
                    items.add(new item(a/b,Types.Num));
                    break;
            }
        }
    }
}

item.java:

package com.example.counte;

public class item {

    public item(double value,int type){
        this.value=value;
        this.type=type;
    }
    public double value=0;
    public int type=0;
}

Types.java:

package com.example.counte;

public class Types {
    public static final int Add=1;
    public static final int Sub=2;
    public static final int X=3;
    public static final int Div=4;
    public static final int Num=5;
}

但其中出现的最为明显的问题:

APP-计算器

 

APP-计算器

上一篇:Android基础——intent的ComponentName


下一篇:Android学习使用基本界面组件(下拉框,单选框,复选框,数字转轮,滚动条)