0

直到三周前,我对为 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 应用程序的算术函数。任何帮助将不胜感激。:)

4

3 回答 3

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();
});

每个按钮都有相应的视图。希望我能帮上忙。

于 2013-06-17T18:53:07.797 回答
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();


            }
        });

    }

}
于 2015-01-22T10:22:58.503 回答
0

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

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

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

此外,除了使用 5Button和 10 TextViews,您可以简单地ButtonTextView结果存储在另一个中TextView,但您说您正在练习,如果只是为了练习,应该没问题。

于 2013-06-17T18:47:18.567 回答