0

我正在实施一个应该从摄氏度到华氏度等计算的程序。但是如果我启动程序,当我点击“计算”按钮时它会崩溃。在 Java 中,当方法从第 72 行开始时,出现以下错误

在此处输入图像描述

627  627 com.example.ubersatzer AndroidRuntime FatalException: main
627  627 com.example.ubersatzer AndroidRuntime java.lang.StackOverflowError
627  627 com.example.ubersatzer AndroidRuntime at.come.example.ubersatzer.InputFragment.isConvertFromCelsiusToFahrenheit (InputFragement.java:72)

这是来自活动类的代码,相关方法:

    public void onClick(View view) {
    switch (view.getId()) {

    case R.id.buttonConvert:
        convert(); 
        break;
    }
}


private void convert() {
            if (inputFragment.isConvertFromCelsiusToFahreinheit()) {
        doConvertFromCelsiusToFahrenheit();
    }
}

private void doConvertFromCelsiusToFahrenheit(){
    String celsiusStringValue = inputFragment.getCelsiusValue();
    double celsiusValue = Double.parseDouble(celsiusStringValue);
    double fahrenheitValue = ((celsiusValue * 9) / 5 ) + 32;
    outputFragment.setOutput(String.valueOf(fahrenheitValue) + "F");
}

这里是 InputFragment.java 类的 isConvertFromCelsiusToFahrenheit() 的代码

    public boolean isConvertFromFahrenheitToCelsius() {
                if (inputFahrenheit.getText() != null
                && inputFahrenheit.getText().toString().trim().length() > 0) {
            return true;
        }

        return false;
    }


    public boolean isConvertFromCelsiusToFahreinheit(){
        return !isConvertFromCelsiusToFahreinheit();
    }
4

2 回答 2

5

这是你的问题

   public boolean isConvertFromCelsiusToFahreinheit(){
        return !isConvertFromCelsiusToFahreinheit();
    }

方法isConvertFromCelsiusToFahreinheit递归调用自己

于 2013-08-19T08:21:39.630 回答
0

从日志中,在 InputFragment.java 的第 72 行有一个递归调用。只要确保这个终止。

于 2013-08-19T08:20:31.073 回答