Попробуй catch не работает (всегда ловит код) - PullRequest
0 голосов
/ 27 декабря 2011

Если кто-нибудь может мне помочь, я был бы благодарен! Следует преобразовать три переменные EditText в строки, а затем в целые числа. Я добавил исключение, потому что без него программа зависала при запуске. Я не уверен, что проблема в преобразовании переменных, в моем коде try catch или в обоих. Пожалуйста, помогите!

package boston.project;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;



public class TheBostonProjectActivity extends Activity {

public EditText aed, bed, ced;
public TextView dtv;
public int a, b, c;
public Button solve;
public double dis;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


        aed = (EditText)(findViewById(R.id.etA));
                    try {
                        a = Integer.parseInt(aed.getText().toString());
                        } catch (NumberFormatException e) {
                            a = 0;
                        }
        bed = (EditText)(findViewById(R.id.etB));
                    try {
                        b = Integer.parseInt(bed.getText().toString());
                        } catch (NumberFormatException e) {
                            b = 0;
                        }
        ced = (EditText)(findViewById(R.id.etC));
                    try {
                        c = Integer.parseInt(ced.getText().toString());
                        } catch (NumberFormatException e) {
                            c = 0;
                        }

    solve = (Button)(findViewById(R.id.bsolve));

    solve.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click
            dis = (b*b)-(4*a*c);
            dtv = (TextView)findViewById(R.id.tvdis);
            dtv.setText("Discriminant:" + dis);
        }
    });

}
}

1 Ответ

3 голосов
/ 27 декабря 2011

Вы пытаетесь получить текст из EditTexts сразу после того, как вы его создали (вызывая setContentView). Все они пусты - не содержат текста. А так как

Integer.parseInt("");

Выдает исключение, все ваши блоки catch выполняются (а это значит, что они действительно работают, а не наоборот).

...