計算 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();
}
}
}
程式執行的過程:
- 輸出 "歡迎來到 BMI 計算機"
- 輸出 "請輸入您的身高:"
- 等待使用者輸入,將輸入結果傳到 h 變數中
- 輸出 "請輸入您的體重:"
- 等待使用者輸入,將輸入結果傳到 w 變數中
- 等待使用者輸入,結束
由上面的過程可以知道,我們的程式已經得到了使用者輸入的身高和體重兩個數值,分別存放在 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 版本 : )