好在我的应用程序中的计算是这样的。

有一个edittext框,其中来自用户的输入(数字)被解析为int的nos。

根据输入,将出现另外两组edittext框。

如果为3,则出现arrayOfEditText的3个编辑文本和arrayOfEditText1的3个编辑文本。
并在这些编辑文本集中输入的值将用于计算。

下面是不完整的Java代码。

    calculate.setOnClickListener(new View.OnClickListener() {
                            @Override public void onClick(View v) {
                    // TODO Auto-generated method stub
                    chk();
}
});
}
public void chk()   {
            EditText[] arrayOfEditText = new EditText[11];
            arrayOfEditText[1] = ((EditText)findViewById(R.id.EditText01));
            arrayOfEditText[2] = ((EditText)findViewById(R.id.EditText02));
            arrayOfEditText[3] = ((EditText)findViewById(R.id.EditText03));
            arrayOfEditText[4] = ((EditText)findViewById(R.id.EditText04));
            arrayOfEditText[5] = ((EditText)findViewById(R.id.EditText05));
            arrayOfEditText[6] = ((EditText)findViewById(R.id.EditText06));
            arrayOfEditText[7] = ((EditText)findViewById(R.id.EditText07));
            arrayOfEditText[8] = ((EditText)findViewById(R.id.EditText08));
            arrayOfEditText[9] = ((EditText)findViewById(R.id.EditText09));
            arrayOfEditText[10] = ((EditText)findViewById(R.id.EditText10));

            EditText[] arrayOfEditText1 = new EditText[11];
            arrayOfEditText1[1] = ((EditText)findViewById(R.id.EditText11));
            arrayOfEditText1[2] = ((EditText)findViewById(R.id.EditText12));
            arrayOfEditText1[3] = ((EditText)findViewById(R.id.EditText13));
            arrayOfEditText1[4] = ((EditText)findViewById(R.id.EditText14));
            arrayOfEditText1[5] = ((EditText)findViewById(R.id.EditText15));
            arrayOfEditText1[6] = ((EditText)findViewById(R.id.EditText16));
            arrayOfEditText1[7] = ((EditText)findViewById(R.id.EditText17));
            arrayOfEditText1[8] = ((EditText)findViewById(R.id.EditText18));
            arrayOfEditText1[9] = ((EditText)findViewById(R.id.EditText19));
            arrayOfEditText1[10] = ((EditText)findViewById(R.id.EditText20));

            for(int i=1;i<=nos;i++)
            {
                if(arrayOfEditText[i].getText().toString().equals("")||arrayOfEditText1[i].getText().toString().equals(""))
                {
                    Toast.makeText(getApplicationContext(), "Dont leave points empty", 0).show();
                }
                else
                {
                    calcul();
                }
            }   }   public void calcul()    {       EditText[] arrayOfEditText = new EditText[11];
            arrayOfEditText[1] = ((EditText)findViewById(R.id.EditText01));
            arrayOfEditText[2] = ((EditText)findViewById(R.id.EditText02));
            arrayOfEditText[3] = ((EditText)findViewById(R.id.EditText03));
            arrayOfEditText[4] = ((EditText)findViewById(R.id.EditText04));
            arrayOfEditText[5] = ((EditText)findViewById(R.id.EditText05));
            arrayOfEditText[6] = ((EditText)findViewById(R.id.EditText06));
            arrayOfEditText[7] = ((EditText)findViewById(R.id.EditText07));
            arrayOfEditText[8] = ((EditText)findViewById(R.id.EditText08));
            arrayOfEditText[9] = ((EditText)findViewById(R.id.EditText09));
            arrayOfEditText[10] = ((EditText)findViewById(R.id.EditText10));

            EditText[] arrayOfEditText1 = new EditText[11];
            arrayOfEditText1[1] = ((EditText)findViewById(R.id.EditText11));
            arrayOfEditText1[2] = ((EditText)findViewById(R.id.EditText12));
            arrayOfEditText1[3] = ((EditText)findViewById(R.id.EditText13));
            arrayOfEditText1[4] = ((EditText)findViewById(R.id.EditText14));
            arrayOfEditText1[5] = ((EditText)findViewById(R.id.EditText15));
            arrayOfEditText1[6] = ((EditText)findViewById(R.id.EditText16));
            arrayOfEditText1[7] = ((EditText)findViewById(R.id.EditText17));
            arrayOfEditText1[8] = ((EditText)findViewById(R.id.EditText18));
            arrayOfEditText1[9] = ((EditText)findViewById(R.id.EditText19));
            arrayOfEditText1[10] = ((EditText)findViewById(R.id.EditText20));
                for(i=1;i<=nos;i++)
                {
                  //perform calculation
                }   }


现在要在// perform计算区域中执行的逻辑是

arrayofedittext [1] * arrayofedittext1 [1] + arrayofedittext [2] * arrayofedittext1 [2] + arrayofedittext [3] * arrayofedittext1 [3] +基于nos / arrayofedittext [1] + arrayofedittext [2] + arrayofedittext [3] +等基于编号

有人可以帮我完成此编码吗? :)

最佳答案

执行相同操作的时间越短,应用程序运行速度就越快。因此,使EditText[] arrayOfEditTextEditText[] arrayOfEditText1类作用域变量,在onCreate()中定义一次,然后不必在R.id.EditText**上使用findViewById()。

这是一个检查计算中是否有任何行为空的函数,如果不是,则total将具有所需的内容。

public void calculateTotal() {
    String first;
    String second;

    double firstNum;
    double numerator = 0;
    double denominator = 0;

    // This loops counts from nos down to 1. It checks for empty strings and
    //   sums up the numerator and denominator along the way.
    for(int index = nos; index > 0; index--) {
        first = arrayOfEditText[index].getText().toString();
        second = arrayOfEditText1[index].getText().toString();

        if(first.isEmpty() || second.isEmpty()) {
            Toast.makeText(getApplicationContext(), "Dont leave any points empty (" + (index + 1) + ")", Toast.LENGTH_LONG).show();
            return; // Invalid input, warn user and bail out of function!
        }

        firstNum = Double.parseDouble(first);
        numerator += firstNum * Double.parseDouble(second);
        denominator += firstNum;
    }

    // Do something with total
    double total = numerator / denominator;
}


更细的点

arrayOfEditTextarrayOfEditText1定义为对整个类可见,如下所示:

public class Example extends Activity {
    EditText[] arrayOfEditText = new EditText[11];
    EditText[] arrayOfEditText1 = new EditText[11];
    ...

        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            ...
            arrayOfEditText[1] = (EditText) findViewById(R.id.EditText01);
            etc, etc...


您应该知道数组是零索引列表。因此,数组中的第一个条目(arrayOfEditTextarrayOfEditText1)为null,如果您尝试引用arrayOfEditText[0]并期望EditText会使您的应用崩溃。

最后,此代码假定每个EditText都是有效的Double,如果您不限制非数字条目,则添加检查非常简单。

10-06 01:25