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 に答える