Just replace the []
and {}
with ()
in the equation, you can only use () because [] and {} have special meaning in Java.
EDIT 1:
The logcat output tells you pretty much exactly what the problem is:
java.lang.ArithmeticException: divide by zero
You are diving by zero and since the only variable you are diving by is numarValori
and numarValori2
one of these has to be 0.
What I think is happening is this:
When You click the calculate button you are performing both calculations. When nothing has been entered for the second calculation every input variable defaults back to 0 and when all variables are 0 so is numarValori2
. When the calculation is then performed it will divide by zero.
I can suggest a few changes to your code to improve it, give me a few minutes and I will edit my answer.
EDIT 2:
Here is my improved source code. I didn't test it (I will if I find the time in about half an hour) but it should work:
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Medii extends Activity {
private EditText txtNum1;
private EditText txtNum2;
private EditText txtNum3;
private EditText txtNum4;
private EditText txtNum5;
private EditText txtNum6;
private EditText txtNum7;
private EditText txtNum8;
private EditText txtTotal;
private EditText txtNum10;
private EditText txtNum11;
private EditText txtNum12;
private EditText txtNum13;
private EditText txtNum14;
private EditText txtNum15;
private EditText txtNum16;
private EditText txtNum17;
private EditText txtNum18;
private EditText txtNum19;
private EditText txtNum20;
private EditText txtTotal2;
private Button btnCal;
private Button btnCal2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.medii);
txtNum1 = (EditText) findViewById(R.id.editText1);
txtNum2 = (EditText) findViewById(R.id.editText2);
txtNum3 = (EditText) findViewById(R.id.editText3);
txtNum4 = (EditText) findViewById(R.id.editText4);
txtNum5 = (EditText) findViewById(R.id.editText5);
txtNum6 = (EditText) findViewById(R.id.editText6);
txtNum7 = (EditText) findViewById(R.id.editText7);
txtNum8 = (EditText) findViewById(R.id.editText8);
txtTotal = (EditText) findViewById(R.id.editText9);
btnCal = (Button) findViewById(R.id.bmedii);
txtNum10 = (EditText) findViewById(R.id.editText10);
txtNum11 = (EditText) findViewById(R.id.editText11);
txtNum12 = (EditText) findViewById(R.id.editText12);
txtNum13 = (EditText) findViewById(R.id.editText13);
txtNum14 = (EditText) findViewById(R.id.editText14);
txtNum15 = (EditText) findViewById(R.id.editText15);
txtNum16 = (EditText) findViewById(R.id.editText16);
txtNum17 = (EditText) findViewById(R.id.editText17);
txtNum18 = (EditText) findViewById(R.id.editText18);
txtNum19 = (EditText) findViewById(R.id.editText19);
txtTotal2 = (EditText) findViewById(R.id.editText20);
btnCal2 = (Button) findViewById(R.id.bmedii12);
btnCal.setOnClickListener(new SimpleAverageClickListener());
btnCal2.setOnClickListener(new ComplexAverageClickListener());
}
private double getNumberFromEditText(EditText editText, double defaultValue) throws NumberFormatException {
if (editText != null) {
Editable editable = editText.getText();
if (editable != null) {
return Double.parseDouble(editable.toString());
}
}
return defaultValue;
}
private boolean isEditTextEmpty(EditText editText) {
if (editText != null) {
Editable editable = editText.getText();
if (editable != null) {
return editable.toString().isEmpty();
}
}
return true;
}
private double getAverageOfEditTexts(EditText... editTexts) throws NumberFormatException{
double divider = 0.0;
double sum = 0.0;
for (EditText editText : editTexts) {
if (!isEditTextEmpty(editText)) {
divider++;
sum += getNumberFromEditText(editText, 0.0);
}
}
return sum / divider;
}
private class SimpleAverageClickListener implements Button.OnClickListener {
@Override
public void onClick(View v) {
try {
double average = getAverageOfEditTexts(txtNum1, txtNum2, txtNum3, txtNum4, txtNum5, txtNum6, txtNum7, txtNum8);
txtTotal.setText(String.valueOf(average));
} catch (NumberFormatException e) {
// Exception occurred because of illegal input, do nothing.
}
}
}
private class ComplexAverageClickListener implements Button.OnClickListener {
@Override
public void onClick(View v) {
try {
double average = getAverageOfEditTexts(txtNum10, txtNum11, txtNum12, txtNum13, txtNum14, txtNum15, txtNum16, txtNum17, txtNum18);
double total = (average * 3 + getNumberFromEditText(txtNum19, 0.0)) / 4.0;
txtTotal2.setText(String.valueOf(total));
} catch (NumberFormatException e) {
// Exception occurred because of illegal input, do nothing.
}
}
}
}