0

我是一个真正的 NOOB 和新编码员。我开始学习 Java,最近在 eclipse 上创建了这个应用程序。它是美元对欧元的转换器。每次我尝试在 Eclipse 上运行代码时,我都会收到错误消息,说应用程序已停止工作。

TextView dollars;
TextView euros;
RadioButton dtoe;
RadioButton etod;
Button calculate;



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

    dollars = (TextView)this.findViewById(R.id.dollars);
    euros = (TextView)this.findViewById(R.id.euros);

    dtoe = (RadioButton)this.findViewById(R.id.dtoe);
    etod = (RadioButton)this.findViewById(R.id.euros);

    calculate = (Button)this.findViewById(R.id.calculate);
    calculate.setOnClickListener(this);

}

public void onClick(View v) {

    if (dtoe.isChecked()){
        convertDollarsToEuros();
    }
    if (etod.isChecked()){
        convertEurosToDollars();
    }
}

protected void convertDollarsToEuros(){

    double val = Double.parseDouble(dollars.getText().toString());
    euros.setText(Double.toString(val*0.67));
}

protected void convertEurosToDollars(){
    double val = Double.parseDouble(euros.getText().toString());
    dollars.setText(Double.toString(val*0.67));
}

}

4

3 回答 3

1

如果没有 logcat,这只是一个有根据的猜测,但看看这一行:

etod = (RadioButton)this.findViewById(R.id.euros);

你确定你使用了正确的ID吗?它与您用于TextView上述的那个相同。您可能正在抛出ClassCastException,因为您试图将其用作RadioButton.

不相关,但您的转换逻辑似乎也错误。您不能期望这两种转换都是(val * 0.67).

于 2013-01-17T01:39:08.380 回答
0

我建议转到 Window > Show View > Console,根据错误,它有时会为您提供指向导致问题的类中的行的链接。

于 2013-01-17T02:47:46.990 回答
0

没有 logcat 很难猜到。但我认为有一个 NPE 被抛出。最有可能来自

dollars.getText().toString()

euros.getText().toString()

我建议您在应用 .toString() 之前包含一个空检查。

于 2013-01-17T01:43:52.640 回答