Калькулятор Android ведущий peroid "."вызывая аварию - PullRequest
0 голосов
/ 14 февраля 2012

Привет, я делаю простой закон закона Ома.Я настроил его для автоматического вычисления значения и обновления итоговых значений при изменении полей editText.Я решил проблему с падением, когда одна из коробок была пуста.

Проблема, с которой я сталкиваюсь сейчас, заключается в том, чтобы начинать с десятичной дроби "."мое приложение вылетает.Что я могу сделать, чтобы это исправить.

Вот мой код.

package com.TWApps.SimpleOhmsLawCalc;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.widget.*;
import android.text.TextWatcher;


public class voltageActivity extends Activity {
private EditText editTextCurrent;
private EditText editTextResistance;
private EditText editTextVoltage;

private double V = 0;
private double I = 0;
private double Re = 0;



public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.voltagelayout);

initcontrols();
}



public void initcontrols()
{
editTextVoltage = (EditText) findViewById(R.id.editTextVoltage);
editTextCurrent = (EditText) findViewById(R.id.editTextCurrent);
editTextResistance = (EditText) findViewById(R.id.editTextResistance);



editTextResistance.addTextChangedListener(new TextWatcher() {   
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    public void afterTextChanged(Editable s) {
        int ReLen = editTextResistance.length();
        if (ReLen > 0){



        calculate();

        }
    }
});

}


private void calculate()
{

I = Double.parseDouble(editTextCurrent.getText().toString());
Re = Double.parseDouble(editTextResistance.getText().toString());


V = (I * Re);

editTextVoltage.setText(Double.toString(V));


}
}

LOGCAT:

02-13 22:20:41.412: I/Process(616): Sending signal. PID: 616 SIG: 9
02-13 22:20:47.652: W/KeyCharacterMap(625): No keyboard for id 0
02-13 22:20:47.652: W/KeyCharacterMap(625): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
02-13 22:20:49.972: D/AndroidRuntime(625): Shutting down VM
02-13 22:20:49.972: W/dalvikvm(625): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-13 22:20:50.002: E/AndroidRuntime(625): FATAL EXCEPTION: main
02-13 22:20:50.002: E/AndroidRuntime(625): java.lang.NumberFormatException
02-13 22:20:50.002: E/AndroidRuntime(625):  at org.apache.harmony.luni.util.FloatingPointParser.initialParse(FloatingPointParser.java:160)
02-13 22:20:50.002: E/AndroidRuntime(625):  at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:281)
02-13 22:20:50.002: E/AndroidRuntime(625):  at java.lang.Double.parseDouble(Double.java:318)
02-13 22:20:50.002: E/AndroidRuntime(625):  at com.TWApps.SimpleOhmsLawCalc.voltageActivity.calculate(voltageActivity.java:70)
02-13 22:20:50.002: E/AndroidRuntime(625):  at com.TWApps.SimpleOhmsLawCalc.voltageActivity.access$1(voltageActivity.java:63)
02-13 22:20:50.002: E/AndroidRuntime(625):  at com.TWApps.SimpleOhmsLawCalc.voltageActivity$1.onTextChanged(voltageActivity.java:48)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.widget.TextView.handleTextChanged(TextView.java:6336)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:6485)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.text.method.NumberKeyListener.onKeyDown(NumberKeyListener.java:117)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.widget.TextView.doKeyDown(TextView.java:4433)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.widget.TextView.onKeyDown(TextView.java:4267)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.view.KeyEvent.dispatch(KeyEvent.java:1256)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.view.View.dispatchKeyEvent(View.java:3855)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:789)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:789)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:789)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:789)
02-13 22:20:50.002: E/AndroidRuntime(625):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1687)
02-13 22:20:50.002: E/AndroidRuntime(625):  at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1120)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.app.Activity.dispatchKeyEvent(Activity.java:2073)
02-13 22:20:50.002: E/AndroidRuntime(625):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1663)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2560)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2535)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1867)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.os.Looper.loop(Looper.java:123)
02-13 22:20:50.002: E/AndroidRuntime(625):  at android.app.ActivityThread.main(ActivityThread.java:3683)
02-13 22:20:50.002: E/AndroidRuntime(625):  at java.lang.reflect.Method.invokeNative(Native Method)
02-13 22:20:50.002: E/AndroidRuntime(625):  at java.lang.reflect.Method.invoke(Method.java:507)
02-13 22:20:50.002: E/AndroidRuntime(625):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-13 22:20:50.002: E/AndroidRuntime(625):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-13 22:20:50.002: E/AndroidRuntime(625):  at dalvik.system.NativeStart.main(Native Method)

Ответы [ 2 ]

0 голосов
/ 14 февраля 2012

окружают методы синтаксического анализа блоком try catch, поскольку он генерирует исключение нулевого указателя.

try{
 V = Double.parseDouble(editTextVoltage.getText().toString());
   }catch(Exception e ){
    V=0;
   }

аналогичным образом следует за всеми

0 голосов
/ 14 февраля 2012

Теперь, когда у вас есть журнал, это очевидно, верно? Вы получаете необработанное NumberFormatException при вычислении. Таким образом, обработайте это - возможно, жаловавшись в TextView, или жаловавшись в тосте, или сначала обрабатывая этот конкретный случай (начального десятичного числа) и добавляя ноль.

...