我的应用程序中的计算就是这样..
有一个edittext框,其中来自用户的输入(数字)被解析为int nos 。
基于输入,出现另外两组edittext框。
如果nos为3,则来自arrayOfEditText的3个edittext和来自arrayOfEditText1的3个edittext出现.. 并且在这些edittext集合中输入的值用于计算。
不完整的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
} }
现在要在 //执行计算区域中执行的逻辑是..
arrayofedittext [1] * arrayofedittext1 [1] + arrayofedittext [2] * arrayofedittext1 [2] + arrayofedittext [3] * arrayofedittext1 [3] + etc基于 nos / arrayofedittext [1] + arrayofedittext [2] + arrayofedittext [3] + 等基于 nos
有人可以帮我完成这个编码吗? :)
答案 0 :(得分:1)
创建全局变量
int[] intEditText new int[nos+1];
int[] intEditText1 new int[nos+1];
....
public void chk() {
int test=0;
try {
for(int i=1;i<=nos+nos;i++) {
if (i==1 && ((EditText)findViewById(R.id.EditText01))=="") {test=1;}
if (i==2 && ((EditText)findViewById(R.id.EditText02))=="") {test=1;}
.....etc.
if (i==11 && ((EditText)findViewById(R.id.EditText11))=="") {test=1;}
if (test==1) {
Toast.makeText(getApplicationContext(), "Dont leave points empty", 0).show();
break;
} else {
if (i==1) {intEditText[i]:=Integer.parseInt(((EditText)findViewById(R.id.EditText1));}
if (i==2) {intEditText[i]:=Integer.parseInt(((EditText)findViewById(R.id.EditText2));}
.... etc.
if (i==11) {intEditText1[i-nos]:=Integer.parseInt(((EditText)findViewById(R.id.EditText11));}
....etc.
calcul();
{
}
} catch(NumberFormatException nbre) {
System.out.println("Could not parse " + nbre);
}
}
public void calcul() {
int myCalc;
myCalc = intEditText[1]*intEditText[2]..... / (intEditText[1]*intEditText[2].....)
//perform calculation
}
答案 1 :(得分:1)
执行相同操作的次数越少,您的应用运行速度就越快。因此,制作EditText[] arrayOfEditText
和EditText[] 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;
}
更好的积分
将arrayOfEditText
和arrayOfEditText1
定义为对整个类可见,如下所示:
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...
您应该知道数组是零索引列表。因此,数组中的第一个条目(arrayOfEditText
和arrayOfEditText1
)是 null ,如果您尝试引用arrayOfEditText[0]
期望EditText您的应用将崩溃。< / p>
最后,此代码假定每个EditText都是有效的Double,如果不限制非数字条目,则添加检查非常简单。