У меня есть вычисление, в котором я должен вычесть 5 переменных из общей суммы, которые все заданы пользователем с помощью EditText, snd, мой вопрос: есть ли способ исключить любое значение (et1, et2, et3, et4, et5), если один из них равен 0? , например, если пользователь помещает 500 как «Totaal» и Et1 & ET2 нуля и для остальных четырех я Oly хочу 3 * 4 вычитается из «Totaal»Как исключить любое значение в этом вычислении, которое равно 0
Это код:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.text.DecimalFormat;
public class Bereken extends AppCompatActivity {
private Double totaal = null;
TextView Txttotal;
Button k1;
Button k2;
Button k3;
TextView kies;
EditText ET1;
EditText ET2;
EditText ET3;
EditText ET4;
EditText ET5;
double temporary;
double randomdouble;
double formerval;
double totje;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bereken);
totaal = getIntent().getExtras().getDouble("Hannibal");
Txttotal = (TextView) findViewById(R.id.Tijdelijk);
Txttotal.setText(new DecimalFormat("##.##").format(totaal));
k1 = (Button)findViewById(R.id.optie1);
k2 = (Button)findViewById(R.id.optie2);
k3 = (Button)findViewById(R.id.optie3);
ET1 = (EditText)findViewById(R.id.editText7);
ET2 = (EditText)findViewById(R.id.editText8);
ET3 = (EditText)findViewById(R.id.editText9);
ET4 = (EditText)findViewById(R.id.editText10);
ET5 = (EditText)findViewById(R.id.editText11);
ET1.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(!ET1.getText().toString().equals("")) {
double et1 = Double.parseDouble(ET1.getText().toString());
double et2 = Double.parseDouble(ET2.getText().toString());
double et3 = Double.parseDouble(ET3.getText().toString());
double et4 = Double.parseDouble(ET4.getText().toString());
double et5 = Double.parseDouble(ET5.getText().toString());
totje = totaal - et1 - et2 - et3 - et4 - et5;
Txttotal.setText(new DecimalFormat("##.##").format(totje));
}else{
totaal = totaal + formerval;
Txttotal.setText(new DecimalFormat("##.##").format(totaal));
}
randomdouble = temporary;
}
});
ET2.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
ET3.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
ET4.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
ET5.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
и это ошибка
02-16 17:05:11.148 18568-18568/dipp.verlinden E/AndroidRuntime: FATAL EXCEPTION: main
Process: dipp.verlinden, PID: 18568
java.lang.NumberFormatException: Invalid double: ""
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.parseDouble(StringToReal.java:267)
at java.lang.Double.parseDouble(Double.java:301)
at dipp.verlinden.Bereken$1.afterTextChanged(Bereken.java:64)
at android.widget.TextView.sendAfterTextChanged(TextView.java:9195)
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:11939)
at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1047)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:564)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:494)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:34)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:691)
at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:199)
at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:184)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:286)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:78)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7229)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
вопрос для чего? 'x-0 = x', поэтому 0 является [нейтральным элементом] (https://en.wikipedia.org/wiki/Identity_element) для добавления и вычитания – Selvin
Но если double равен 0, приложение вылетает –
Можете ли вы показать код понять, где вы ошибаетесь? –