如何创建一个Android应用程序,它成对接收数字,乘以它们,并添加结果?

时间:2013-06-17 18:34:30

标签: android math calculator

直到三周前,我对开发Android应用程序一无所知,并且具有非常基本的Java背景。

然而,我开始兴趣,现在我正在努力开发一个执行基本算术运算的简单应用程序。

我希望应用程序要做的是接收用户输入的数字,最多20对,分别乘以每对,然后添加结果。 我已经完成了对的乘法运算,但无法将结果加起来。 这是我到目前为止的乘法部分,它可以正常工作....

public class CalcAlgorithm extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    final String LOG_TAG = "MainScreen";
    super.onCreate(savedInstanceState);
    setContentView(R.layout.calc_algorithm);

    final EditText value1=(EditText) findViewById(R.id.value1);
    final EditText value2=(EditText) findViewById(R.id.value2);
    final EditText value3=(EditText) findViewById(R.id.value3);
    final EditText value4=(EditText) findViewById(R.id.value4);
    final EditText value5=(EditText) findViewById(R.id.value5);
    final EditText value6=(EditText) findViewById(R.id.value6);
    final EditText value7=(EditText) findViewById(R.id.value7);
    final EditText value8=(EditText) findViewById(R.id.value8);
    final EditText value9=(EditText) findViewById(R.id.value9);
    final EditText value10=(EditText) findViewById(R.id.value10);
    final TextView result=(Button) findViewById (R.id.multiplyValues);
    final TextView result2=(Button) findViewById (R.id.multiplyValues2);
    final TextView result3=(Button) findViewById (R.id.multiplyValues3);
    final TextView result4=(Button) findViewById (R.id.multiplyValues4);
    final TextView result5=(Button) findViewById (R.id.multiplyValues5);
    final TextView result6=(Button) findViewById (R.id.addButton);

    Button multiplyButton = (Button)findViewById(R.id.multiplyValues);
    multiplyButton.setOnClickListener(new OnClickListener(){
        public void onClick(View v) {
            try {
                int val1=Integer.parseInt(value1.getText().toString());
                int val2=Integer.parseInt(value2.getText().toString());
                Integer answer = val1*val2;
                result.setText(answer.toString());
            }  catch (Exception e) {
                Log.e(LOG_TAG, "Failed to multiply numbers",e);
            }
        }  
    });

     Button multiplyButton2 = (Button) findViewById(R.id.multiplyValues2);  
       multiplyButton2.setOnClickListener(new OnClickListener() {  
           public void onClick(View v) {  
              try {
                   int val3 = Integer.parseInt(value3.getText().toString());  
                   int val4 = Integer.parseInt(value4.getText().toString());
                   Integer answer = val3 * val4;  
                   result2.setText(answer.toString());                     
               }  catch (Exception e) {
                   Log.e(LOG_TAG, "Failed to multiply numbers",e);
               }
           }  
       });  

       Button multiplyButton3 = (Button) findViewById(R.id.multiplyValues3);  
       multiplyButton3.setOnClickListener(new OnClickListener() {  
           public void onClick(View v) {  
              try {
                   int val5 = Integer.parseInt(value5.getText().toString());  
                   int val6 = Integer.parseInt(value6.getText().toString());  
                   Integer answer = val5 * val6;  
                   result3.setText(answer.toString());  
           }  catch (Exception e) { Log.e(LOG_TAG, "Failed to multiply numbers",e);}}  
       });  

       Button multiplyButton4 = (Button) findViewById(R.id.multiplyValues4);  
       multiplyButton4.setOnClickListener(new OnClickListener() {  
           public void onClick(View v) {  
              try {
                   int val7 = Integer.parseInt(value7.getText().toString());  
                   int val8 = Integer.parseInt(value8.getText().toString());  
                   Integer answer = val7 * val8;  
                   result4.setText(answer.toString());  
           } catch (Exception e) { Log.e(LOG_TAG, "Failed to multiply numbers",e);}} 
       });  

       Button multiplyButton5 = (Button) findViewById(R.id.multiplyValues5);  
       multiplyButton5.setOnClickListener(new OnClickListener() {  
           public void onClick(View v) {  
              try {
                int val9 = Integer.parseInt(value9.getText().toString());
                int val10 = Integer.parseInt(value10.getText().toString());  
                   Integer answer = val9 * val10;  
                   result5.setText(answer.toString());  
           } catch (Exception e) {
               Log.e(LOG_TAG,"Failed to multiply number",e);
           }
           }
       }); 

这是正确的道路吗?并且,我意识到有一种方法可以将代码总结为更少的行而不是我拥有它。有人可以告诉我如何减少代码行数,然后一次性添加结果吗? 添加值后,我再次对结果执行更多(基本)操作,但我想在知道如何添加结果后,我应该能够从那里开始。
**也许我应该指出,我需要单独进行一次添加,即单独点击一个添加的按钮(可能是TotalSum),而不是随着乘法继续进行,这样用户就可以看到相乘的结果输入的每对数字,以及单击单独按钮时所有配对结果的总和。 如果我可以获得一些书籍/文档/视频的链接,可以帮助编写Android应用程序中的算术函数,这将是非常有帮助的。 任何帮助将非常感谢伙计们。 :)

3 个答案:

答案 0 :(得分:1)

你可以添加一个calculateResultSum()方法,你可以在每个onClick方法的末尾调用,并执行类似

的方法
void calculateResultSum() {
    Integer res1 = Integer.parse(result.getText.toString());
    // .. get all the other results
    Integer finalResult = res1 + res2 + res2 + res4 + res5;
    //do something with the result
}

但您的方法非常冗余,即您在所有onClick方法中都拥有相同的代码。这被认为是错误的代码样式,您应该尝试将数字的实际处理提取到单个方法中,并从每个侦听器调用此方法,例如

void addNumbers(TextView tv1, TextView tv2, TextViev res){
   try {
       Integer val1=Integer.parseInt(value1.getText().toString());
       Integer val2=Integer.parseInt(value2.getText().toString());
       Integer answer = val1*val2;
       res.setText(answer.toString());
    } catch (Exception e) { Log.e(LOG_TAG, "Failed to multiply numbers",e);}}  
}

并将onClicks设置为

multiplyButton.setOnClickListener(new OnClickListener(){
    public void onClick(View v) {
        addNumbers(value1,value2,result);
        calculateResultSum();
});

使用每个Button的相应视图。希望我能提供帮助。

答案 1 :(得分:0)

如果我理解正确,这是解决方案。

创建类似private int total=0;的类变量,并在每个setOnClickListener中将answer添加到此变量中。

Integer answer = val1*val2;
total += answer;

此外,您只需使用Button和一个TextView将结果存储在另一个Button中,而不是使用5 TextView和10 TextView来执行此操作你说你在练习,如果只是练习它应该没问题。

答案 2 :(得分:0)

package com.example.calc;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText num1_edt=(EditText)findViewById(R.id.num1_edt);
        final EditText num2_edt=(EditText)findViewById(R.id.num2_edt);
        final Button add_btn=(Button)findViewById(R.id.add_btn);
        findViewById(R.id.sub_btn);
        findViewById(R.id.mul_btn);
        findViewById(R.id.div_btn);
        add_btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                int a=Integer.parseInt(num1_edt.getText().toString());              
                int b=Integer.parseInt(num2_edt.getText().toString());
                Integer  n=a*b;
                Toast.makeText(getApplicationContext(),"Your Num Is:"+n.toString(),Toast.LENGTH_LONG).show();


            }
        });

    }

}