首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算器问题- Android编程

计算器问题- Android编程
EN

Stack Overflow用户
提问于 2012-02-25 01:13:37
回答 2查看 4K关注 0票数 1

我正在尝试设计一个简单的计算器,作为一两个游戏的记分板。最终,我希望能够选择玩家的数量,让那么多的分数追踪器出现在屏幕上,能够使用触摸计算器来加或减(或除或乘)我得到的大部分工作。

目前,它接受在计算器显示中输入的文本,将其加/减/其他任何值添加到我选择的玩家分数。

问题是试图让数字键显示在计算器显示部分。例如,我希望能够先敲"1“然后敲"0”,然后让"10“出现在计算器中。这应该很容易,因为我可以手动输入文本(使用android默认键盘),但我能得到的最接近的是一次只显示一个数字……

长话短说,我正在尝试让一个触摸板类型的计算器的数字按钮工作和显示。下面是我的主要项目代码。如果你需要我的布局代码,我也可以把它贴出来(参考ID)。

我知道这可能是一个简单的解决方案,但我找到的每个教程要么过于复杂,要么不起作用……任何帮助都是非常感谢的!

代码语言:javascript
运行
复制
package com.MCalculator8.test;

import com.MCalculator8.test.R;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MCalculator8Activity extends Activity {
    private EditText player1name;
    private EditText player2name;
    private EditText player3name;
    private EditText player4name;
    private EditText player5name;
    private EditText player6name;
    private EditText player7name;

    private EditText player1score;
    private EditText player2score;
    private EditText player3score;
    private EditText player4score;
    private EditText player5score;
    private EditText player6score;
    private EditText player7score;

    private EditText input;

    private TextView operator;
    private MCalculator8Activity mContext;

    // Called when the activity is first created. 
    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mContext = this;

            setContentView(R.layout.main);

            player1name = (EditText) findViewById(R.id.player1name);
            player2name = (EditText) findViewById(R.id.player2name);
            player3name = (EditText) findViewById(R.id.player3name);
            player4name = (EditText) findViewById(R.id.player4name);
            player5name = (EditText) findViewById(R.id.player5name);
            player6name = (EditText) findViewById(R.id.player6name);
            player7name = (EditText) findViewById(R.id.player7name);

            input = (EditText) findViewById(R.id.input);

            player1score = (EditText) findViewById(R.id.player1score);
            player2score = (EditText) findViewById(R.id.player2score);
            player3score = (EditText) findViewById(R.id.player3score);
            player4score = (EditText) findViewById(R.id.player4score);
            player5score = (EditText) findViewById(R.id.player5score);
            player6score = (EditText) findViewById(R.id.player6score);
            player7score = (EditText) findViewById(R.id.player7score);

            operator = (TextView) findViewById(R.id.operator);

            // We create an OnClick Event in each button.

            Button plusButton = (Button) findViewById(R.id.add);
            Button minusButton = (Button) findViewById(R.id.subtract);
            Button multiplyButton = (Button) findViewById(R.id.multiply);
            Button player1equals = (Button) findViewById(R.id.player1equals);
            Button player2equals = (Button) findViewById(R.id.player2equals);
            Button player3equals = (Button) findViewById(R.id.player3equals);
            Button player4equals = (Button) findViewById(R.id.player4equals);
            Button player5equals = (Button) findViewById(R.id.player5equals);
            Button player6equals = (Button) findViewById(R.id.player6equals);
            Button player7equals = (Button) findViewById(R.id.player7equals);

            plusButton.setOnClickListener(new OnClickListener() {

                    public void onClick(View arg0) {

                            operator.setText("+");

                    }

            });

            minusButton.setOnClickListener(new OnClickListener() {

                    public void onClick(View arg0) {

                            operator.setText("-");

                    }

            });

            multiplyButton.setOnClickListener(new OnClickListener() {

                    public void onClick(View arg0) {

                            operator.setText("x");

                    }

            });


            player1equals.setOnClickListener(new OnClickListener() {

                    private AlertDialog show;

                    public void onClick(View arg0) {

                            if ((input.getText().length() == 0)
                                            || (input.getText().toString() == " ")) {
                                         //   || (input2.getText().length() == 0)
                                         //   || (input2.getText().toString() == " ")) {

                                    show = new AlertDialog.Builder(mContext).setTitle("Error")
                                                    .setMessage("Some inputs are empty")
                                                    .setPositiveButton("OK", null).show();

                            } else if (operator.getText().equals("")) {

                                    show = new AlertDialog.Builder(mContext).setTitle("Error")
                                                    .setMessage("Operator is null").setPositiveButton(
                                                                    "OK", null).show();

                            } else if (operator.getText().equals("+")) {

                                    double result = new Double(input.getText().toString())
                                                    + new Double(player1score.getText().toString());

                                    player1score.setText(Double.toString(result));

                            } else if (operator.getText().equals("-")) {

                                    double result = new Double(player1score.getText().toString())
                                                    - new Double(input.getText().toString());

                                    player1score.setText(Double.toString(result));

                            } else if (operator.getText().equals("x")) {

                                    double result = new Double(input.getText().toString())
                                                    * new Double(player1score.getText().toString());


                                    player1score.setText(Double.toString(result));

                            }

                    }

            });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-25 06:34:27

这个例子怎么样?

下面是名为"CalculatorExample.java“的主类

代码语言:javascript
运行
复制
package com.calculatorExample;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class CalculatorExample extends Activity implements android.view.View.OnClickListener{
    Button add, subtract, multiply, divide;
    TextView firstInput, secondInput, output;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Reference TextViews and Buttons
        firstInput = (TextView) findViewById(R.id.firstIput);
        secondInput = (TextView) findViewById(R.id.secondInput);
        output = (TextView) findViewById(R.id.output);
        add = (Button) findViewById(R.id.add);
        subtract = (Button) findViewById(R.id.subtract);
        multiply = (Button) findViewById(R.id.multiply);
        divide = (Button) findViewById(R.id.divide);

        // Set listeners for when buttons are pressed
        add.setOnClickListener(this);
        subtract.setOnClickListener(this);
        multiply.setOnClickListener(this);
        divide.setOnClickListener(this);

    }

    /**
     * Switch statement to decide which button was pressed
     */
    public void onClick(View arg0) {
        // Get values from top two TextViews
        double firstInputValue = Double.parseDouble(firstInput.getText().toString());
        double secondInputValue = Double.parseDouble(secondInput.getText().toString());
        // Initialise output
        double outputValue = 0;

        // Perform relevant operations
        switch(arg0.getId()){
        case R.id.add:
            outputValue = firstInputValue + secondInputValue;
            break;
        case R.id.subtract:
            outputValue = firstInputValue - secondInputValue;
            break;
        case R.id.multiply:
            outputValue = firstInputValue * secondInputValue;
            break;
        case R.id.divide:
            outputValue = firstInputValue / secondInputValue;
            break;
        }
        // Add result to Running total stored in output TextView
        outputValue += Double.parseDouble(output.getText().toString());
        output.setText("" + outputValue);

    }
}

下面是XML文件("main.xml")

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <LinearLayout 
        android:weightSum="100"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
    >
        <EditText 
            android:layout_weight="50"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/firstIput">
        </EditText>
        <EditText 
            android:layout_weight="50"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:id="@+id/secondInput">
        </EditText>
    </LinearLayout>
    <LinearLayout 
        android:weightSum="100"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
    >
        <Button 
            android:layout_weight="50"
            android:text="+" 
            android:id="@+id/add" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
        <Button 
            android:layout_weight="50"
            android:text="-" 
            android:id="@+id/subtract" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
    </LinearLayout>
    <LinearLayout 
        android:weightSum="100"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
    >
        <Button 
            android:layout_weight="50"
            android:text="X" 
            android:id="@+id/multiply" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
        <Button 
            android:layout_weight="50"
            android:text="/" 
            android:id="@+id/divide"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
    </LinearLayout>
    <EditText 
        android:text="0.0"
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:id="@+id/output">
    </EditText>
</LinearLayout>
票数 1
EN

Stack Overflow用户

发布于 2012-02-25 01:17:57

难道你不能有一个字符串,你可以在每次按下计算器上的按钮时附加到后面吗?然后用新字符串更新计算器显示?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9435041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档