尝试catch不起作用(总是捕获代码)

时间:2011-12-26 22:57:40

标签: java android exception try-catch

如果有人能帮助我,我将不胜感激!它应该将三个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 个答案:

答案 0 :(得分:3)

您正在尝试在创建文本后通过EditTexts获取文本(通过调用setContentView)。它们都是空的 - 不包含任何文字。从那以后

Integer.parseInt("");

抛出异常,所有的catch块都被执行(这意味着它们实际上正在工作,而不是相反)。