計算 BMI

讓我們先來看一下上一節的程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BmiConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("歡迎來到 BMI 計算機");

            Console.WriteLine("請輸入您的身高:");
            string h = Console.ReadLine();

            Console.WriteLine("請輸入您的體重:");
            string w = Console.ReadLine();

            Console.ReadLine();
        }
    }
}

程式執行的過程:

  1. 輸出 "歡迎來到 BMI 計算機"
  2. 輸出 "請輸入您的身高:"
  3. 等待使用者輸入,將輸入結果傳到 h 變數中
  4. 輸出 "請輸入您的體重:"
  5. 等待使用者輸入,將輸入結果傳到 w 變數中
  6. 等待使用者輸入,結束

由上面的過程可以知道,我們的程式已經得到了使用者輸入的身高和體重兩個數值,分別存放在 h 和 w 之中。接下來我們只需要用 h 和 w 來做計算即可。

 

BMI公式

BMI (Body Mass Index) 身體質量指數,是一種簡易的評估體重的計算方法。其計算公式是:

BMI = 體重(公斤)/ 身高(公尺)的平方

用我們既有學到的來試著寫的話,可能會寫成這樣

string bmi = w / (h * h);

但這樣執行起來程式會回報錯誤。

意思是兩個文字(string)類型的變數無法相除。

 

變數類型

我們目前只用過 string (文字)這個類型來製作(宣告)變數,因為 Console.ReadLine() 所傳回的就是文字類型的變數。

所以現在我們得用一個新的變數類型 int (整數)
可以先改為:

Double bmi = w / (h * h);

現在 bmi 這個變數的類型是整數(int)了,但 w 和 h 並沒有改變,還是文字 (string)

所以現在我們需要將 w 和 h 做類型的轉換 (轉型)
轉成數字的程式是:

Double.Parse(其他類型的變數)

如果要轉換 w 變成數字的話,就是:

Double.Parse(w)

所以全部轉換的話就會是這樣:

Double bmi = Double.Parse(w) / (Double.Parse(h) * Double.Parse(h));

但別忘了身高要用公尺來計算,所以兩個 h 要再乘上 0.01:

Double bmi = Double.Parse(w) / ((Double.Parse(h)*0.01) * (Double.Parse(h)*0.01));

小括號會影響計算的先後順序。數學課裡的計算括號有分大中小,但程式裡的括號全部都用小括號即可。

 

計算 BMI,並輸出結果

看起來有點長,但十分容易理解,現在我們完整的程式碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BmiConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("歡迎來到 BMI 計算機");

            Console.WriteLine("請輸入您的身高:");
            string h = Console.ReadLine();

            Console.WriteLine("請輸入您的體重:");
            string w = Console.ReadLine();

            Double bmi = Double.Parse(w) / ((Double.Parse(h) * 0.01) * (Double.Parse(h) * 0.01));
            Console.WriteLine("您的 BMI 值是:");
            Console.WriteLine(bmi);

            Console.ReadLine();
        }
    }
}

最後執行結果如下:

由於 bmi 是變數,不是文字,所以不必用 " 包住。

 

四捨五入到小數第一位

如果你還覺得有點美中不足,想必是小數點太多的關係。
下面有一個方法可以讓小數點四捨五入到第一位:

Math.Round(bmi,1);

直接放到輸出的地方即可,所以完整的程式碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BmiConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("歡迎來到 BMI 計算機");

            Console.WriteLine("請輸入您的身高:");
            string h = Console.ReadLine();

            Console.WriteLine("請輸入您的體重:");
            string w = Console.ReadLine();

            Double bmi = Double.Parse(w) / ((Double.Parse(h) * 0.01) * (Double.Parse(h) * 0.01));
            Console.WriteLine("您的 BMI 值是:");
            Console.WriteLine(Math.Round(bmi,1));

            Console.ReadLine();
        }
    }
}

恭喜你完成了 BMI 值的 Console 版本 : )

results matching ""

    No results matching ""