私が抱えている問題は、試しにキャッチして(ユーザーが情報を入力するように求められる)たびに間違ったことを入力したり誤って入力したりするとエラーが発生します。私がtry catchを置くと、それは機能しません、それはちょうどプログラムを終了します。私がままにするとここキャッチブロックの問題を試す
namespace MaxHeartRate
{
class Program
{
static void Main(string[] args)
{
// Display program instructions
DisplayInstructions();
// Collected user info
CollectUserInfo();
}
static void DisplayInstructions()
{
Console.WriteLine("************************************************");
Console.WriteLine("This program will Calculate your Max Heart Rate");
Console.WriteLine("Also your Mininum and Maximum target Heart rate");
Console.WriteLine("You will have to enter your info in when promted");
Console.WriteLine("************************************************");
return;
}
static void CollectUserInfo()
{
// Declar Variables
string firstName, lastName;
int birthYear = 0;
int currentYear = 0;
int age;
double maxHeartRate, minTargetHeartRate, maxTargetHeartRate;
try
{
// User is asked to enter info
Console.Write("Enter your first Name: ");
firstName = Console.ReadLine();
Console.Write("Enter your last name: ");
lastName = Console.ReadLine();
Console.Write("Enter the current year: ");
currentYear = int.Parse(Console.ReadLine());
Console.Write("Enter your birth year: ");
birthYear = int.Parse(Console.ReadLine());
// Find Age
age = findAge(currentYear, birthYear);
// Find Max Heart rate
maxHeartRate = findMaxHR(age);
// Find Minimum Target Heart Rate
minTargetHeartRate = findMinTHR(maxHeartRate);
// Find Maximum Target Heart Rate
maxTargetHeartRate = findMaxTHR(maxHeartRate);
// Display Information
DisplayInformation(firstName, lastName, age, maxHeartRate, minTargetHeartRate, maxTargetHeartRate);
}
catch (Exception)
{
Console.WriteLine("Invalid input. Please try again");
}
// Methods
}
static int findAge(int cYear, int bYear)
{
int age = cYear - bYear;
return age;
}
static int findMaxHR(int age)
{
int MHR = 220 - age;
return MHR;
}
static double findMinTHR(double maxHeartRate)
{
double minTHR = maxHeartRate * 0.50;
return minTHR;
}
static double findMaxTHR(double maxHeartRate)
{
double maxTHR = maxHeartRate * 0.85;
return maxTHR;
}
// Display information
static void DisplayInformation(string firstName, string lastName, int age, double maxHeartRate, double minTargetHeartRate, double maxTargetHeartRate)
{
Console.WriteLine();
Console.WriteLine("************************************************");
Console.WriteLine("Hello " + firstName + " " + lastName + " You are " + age + " Years old" +
"\n" + "\nYour Max Heart rate is " + maxHeartRate +
" BPM" + "\n" + "\nYour Minimum Target Heart rate is " + minTargetHeartRate + " BPM" +
"\n" + "\nwith a Maximum Target Heart rate of " + maxTargetHeartRate + " BPM");
Console.WriteLine("************************************************");
Console.Write("Push enter to exit");
Console.ReadKey();
}
}
}
:それ以外の場合は、次のコードが動作
age = findAge(currentYear, birthYear)
とラインで
CS0165: Use of unassigned local variable 'currentYear'
を取得します何とか戻ってもう一度尋ねる。また、 'Int.TryParse'を使ってtry/catchを避けることもできます。 – Gusmantry/catchの助けが必要なら、どうやって実装したのか教えてください。 – oerkelens
デバッガを使用すると通常は揺れます。 –