0

このコードを使用して、テキスト フィールドに入力したキロメートルをマイルに変換しようとしていますが、うまくいきません。誰でもこれで私を助けることができますか?

private void btn_convertActionPerformed(java.awt.event.ActionEvent evt) {

    String str2 = "0.621";

    int num1 = Integer.parseInt(txt_input.getText());
    int num2 = Integer.parseInt(str2);
    lbl_converted.setText("" + (num1 * num2));
    ...
}
4

6 に答える 6

3

浮動小数点数を使用しようとしています。この場合Integer、必要なタイプではありません。Double代わりに(およびのようなものを)使用してくださいDouble.parseDouble(txt_input.getText());。また、str2 を文字列にする必要はありません。代わりに double 定数を使用してください。

于 2013-09-10T11:21:01.903 に答える
1

解析にInteger使用する代わりにDouble

于 2013-09-10T11:23:23.430 に答える
0

String を数値として使用していますが、これは問題を処理する正しい方法ではありません。これは、int に解析すると、double の整数部分のみである可能性のある間違った数値が得られるためです。あなたの場合、変換定数はゼロです。コードは次のようになります。

private void btn_convertActionPerformed(java.awt.event.ActionEvent evt) {

    double conversionConstant = 0.621;

    int input = Integer.parseInt(txt_input.getText());
    double kmToMiles = conversionConstant * input;
    lbl_converted.setText("" + kmToMiles);
    ...
}

1.5これはかなり問題ありませんが、isや NaN (非数値)などの非整数値を入力すると失敗します。

これはあなたの問題に対する完全な解決策になるはずです:

private void btn_convertActionPerformed(java.awt.event.ActionEvent evt) {

    final double CONVERSION_CONSTANT = 0.621;

    String inputText = txt_input.getText();

    double input;
    try{
        input = Double.parseDouble(txt_input.getText());
        double kmToMiles = conversionConstant * input;
        lbl_converted.setText("" + kmToMiles);
    }catch(NumberFormatException e){
        System.out.println("You have typed a wrong input. Only numbers are allowed");
    }

}
于 2013-09-10T11:30:18.833 に答える
0

"0.621"は整数ではありません - 代わりに double または float を使用してみてください。

また、そもそも文字列に入れる必要はなく、次のような二重リテラルを使用するだけです

final double num2 = 0.621;

Integer.parseInt が NumberFormatException をスローする可能性があることに注意してください。これは処理する必要があります。

于 2013-09-10T11:21:33.010 に答える
0

簡単に使用できます

final double converter = 0.621;
double num = Double.parseDouble("45");
double answer = num * converter;

この方法では、既知の値を解析する必要さえありません。コンバーターは変更されないため、定数にすることもできます

于 2013-09-10T11:22:18.973 に答える
0

以下のようにコードを変更するだけです:

private void btn_convertActionPerformed(java.awt.event.ActionEvent evt) {

   double num1 = Double.parseDouble(txt_input.getText());

    lbl_converted.setText("" + (num1 * 0.621));
    ...
}
于 2013-09-10T11:23:37.540 に答える