Notes
Notes
A class type that is declared to take type parameters is called a generic class type.
Input, error handling, and compute stats
using System;
using System.Collections.Generic;
namespace dotnet_example
{
class Program
{
public int AddTwoNumbers(int number1, int number2)
{
return number1 + number2;
}
static void Main(string[] args)
{
var grades = new List<double>();
var sum = 0.0;
var minGrade = 0.0;
var maxGrade = 100.0;
var highest = minGrade;
var lowest = maxGrade;
double avg = default;
while (true)
{
Console.WriteLine("Enter a grade ('q' to exit)");
var input = Console.ReadLine();
if (input == "q")
{
break;
}
try
{
var grade = double.Parse(input);
validateGrade(grade);
}
catch (FormatException ex)
{
printWarning(ex.Message);
}
catch (ArgumentException ex)
{
printWarning(ex.Message);
}
}
setStats();
printStats();
void validateGrade(double grade)
{
if (grade >= 0 && grade <= 100)
{
grades.Add(grade);
}
else
{
throw new ArgumentException("Enter a number between 0-100");
}
}
void setStats()
{
foreach (var grade in grades)
{
sum += grade;
highest = Math.Max(grade, highest);
lowest = Math.Min(grade, lowest);
}
avg = sum / grades.Count;
}
void printStats()
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"All Grades: {String.Join(",", grades)}");
Console.WriteLine($"Sum: {sum:N2}");
Console.WriteLine($"Average: {avg:N2}");
Console.WriteLine($"Highest: {highest}");
Console.WriteLine($"Lowest: {lowest}");
Console.ResetColor();
}
void printWarning(string msg)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(msg);
Console.ResetColor();
}
}
}
}
// Output
// All Grades: 50,60,70
// Sum: 180.00
// Average: 60.00
// Highest: 70
// Lowest: 50
Debugging
Array
// Unlike JavaScript, Array needs to be iterated in order to console log
foreach (string company in companies)
{
Console.WriteLine(company);
}
Last updated
Was this helpful?