0

3 週間前まで、私は 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 メソッドに同じコードがあります。これは不適切なコード スタイルと見なされます。数値の実際の処理を 1 つのメソッドに抽出し、各リスナーからこのメソッドを呼び出すようにしてください。たとえば、

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

私が正しく理解していれば、ここに解決策があります。

のようなクラス変数を作成しprivate int total=0;、それぞれにs をこの変数にsetOnClickListener追加します。answer

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

Buttonまた、5 秒と 10TextView秒を使用する代わりに、単純に 1 つの結果を別のButton1 つTextViewに格納するだけでこれを行うことができTextViewますが、練習しているとのことですが、練習するだけであれば問題ありません。

于 2013-06-17T18:47:18.567 に答える
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 に答える