1

そのため、BMI計算機に関する現在のコードで小さな問題が発生しています。私はここで他のBMI計算機のトピックを検索しましたが、どれも役に立たなかったようです。私はASP.Netを初めて使用し、まだ実際には何も習得していないことを覚えておいてください。JSを使用すると生活が楽になると言われていますが、ASP.netでこれを行う必要があります

BMI計算機には、フィート、インチ、ポンドの標準的な測定値を使用しています。この情報を保持する3つのテキストボックスがあります。コードの計算部分については、イベントハンドラーで、テキストボックスに数値のみが入力されているかどうかを確認してから、個々のBMIを計算してください。計算の結果は、「結果」というタイトルの4番目のテキストボックスに表示されます。以下のコードは私が得た限りのものです。

//*************Event Handler for the calculation portion*****************

void calcUS_Click(object sender, EventArgs e)
{
    string Heightinfeet = heightus.Text;
    string Heightininches = heightus1.Text;
    string Weight = weightus.Text;

    double number;


    string bmi = resultus.Text;

    bool isHeightinfeet = Double.TryParse(Heightinfeet, out number);
    bool isHeightininches = Double.TryParse(Heightininches, out number);
    bool isWeight = Double.TryParse(Weight, out number);


    if (isHeightinfeet && isHeightininches && isWeight)
    {
        bmi = (Weight / ((Heightinfeet * 12) + Heightininches)) * ((Heightinfeet * 12) + Heightininches))) * 703);
    }

    else
    {
        Response.Write("Please type a numeric value into each of the text boxes.");
    }
}
//*****************End of calculation Event Handler*******************

の実際の計算部分を除いて、すべてが機能しているようです。

if (isHeightinfeet && isHeightininches && isWeight)
{
    bmi = (Weight / ((Heightinfeet * 12) + Heightininches)) * ((Heightinfeet * 12) + Heightininches))) * 703);
}

上記の式で、「Heightinfeet」と「Heightininches」にマウスを合わせると、「演算子「*」は「string」または「int」タイプのオペランドに適用できません」というエラーが発生します。

4

2 に答える 2

0

これは私ができる小さなリファクタリングです

int Heightinfeet;
double Heightininches;
double Weight;

if (int.TryParse(heightus.Text, out Heightinfeet) && 
    Double.TryParse(heightus1.Text, out Heightininches) && 
    Double.TryParse(weightus.Text, out Weight))
{
  bmi = (Weight / ((Heightinfeet * 12) + Heightininches)) * ((Heightinfeet * 12) + Heightininches))) * 703);
}
于 2013-03-13T23:26:50.793 に答える
0

はい、「*」操作を行うことはできません。intこの場合、数値「12」と文字列です。Heightinfeet

そのため、最初に文字列を int または double に解析して使用する必要があります。

(int.Parse(Heightinfeet) * 12) またはそれはダブルです (double.Parse(Heightinfeet) * 12)

于 2013-03-13T23:28:01.217 に答える