114 lines
3.9 KiB
C#
114 lines
3.9 KiB
C#
using System;
|
|
using System.Text;
|
|
|
|
namespace SammenligneTallMellomToAndreTall
|
|
{
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
// Valgfritt - Eksisterer kun for at "æ, ø, å" vises i konsollvinduet riktig.
|
|
Console.OutputEncoding = Encoding.UTF8;
|
|
|
|
// Skriver ut melding og leser input
|
|
Console.WriteLine("Skriv inn et tall:");
|
|
while (true)
|
|
{
|
|
var input = Console.ReadLine();
|
|
|
|
// Prøver å konvertere input fra tekst til desimaltall
|
|
double number;
|
|
bool validNumber = double.TryParse(input, out number);
|
|
|
|
/**
|
|
* Sjekker om input er en av følgende:
|
|
* - IKKE et gyldig desimaltall
|
|
* - Lavere enn 5
|
|
* - Høyere enn 54.99
|
|
*
|
|
* Om ett av disse tilfellene er "true", starter den loopen (programmet) på nytt
|
|
* UTEN å gå videre i programmet.
|
|
*/
|
|
if (!validNumber || number < 5 || number > 54.99)
|
|
{
|
|
Console.WriteLine($"Ugyldig nummer: {input} - Prøv igjen.");
|
|
|
|
// Starter while-loopen på nytt.
|
|
continue;
|
|
}
|
|
|
|
// Skriver ut "input"-tallet
|
|
Console.WriteLine($"Nummeret du skrev inn er: {number}");
|
|
Console.ReadLine();
|
|
|
|
// Avslutter "while"-loopen
|
|
// Kan alternativt bruke en do/while med et satt bool og endret dette.
|
|
// Har laget et enkelt eksempel et par linjer lenger ned.
|
|
break;
|
|
}
|
|
|
|
// Samme eksempel med do/while
|
|
|
|
// Sett en standard verdi slik at do/while starter og fortsetter som forventet.
|
|
bool ugyldigTall = true;
|
|
do
|
|
{
|
|
var input = Console.ReadLine();
|
|
|
|
// Prøver å konvertere input fra tekst til desimaltall
|
|
double number;
|
|
bool validNumber = double.TryParse(input, out number);
|
|
|
|
/**
|
|
* Sjekker om input er en av følgende:
|
|
* - IKKE et gyldig desimaltall
|
|
* - Lavere enn 5
|
|
* - Høyere enn 54.99
|
|
*
|
|
* Om ett av disse tilfellene er "true", starter den loopen (programmet) på nytt
|
|
* UTEN å gå videre i programmet.
|
|
*/
|
|
if (!validNumber || number < 5 || number > 54.99)
|
|
{
|
|
Console.WriteLine($"Ugyldig nummer: {input} - Prøv igjen.");
|
|
|
|
// Starter while-loopen på nytt.
|
|
continue;
|
|
}
|
|
|
|
// Skriver ut "input"-tallet
|
|
Console.WriteLine($"Nummeret du skrev inn er: {number}");
|
|
Console.ReadLine();
|
|
|
|
// Avslutter "do/while"-loopen
|
|
ugyldigTall = false;
|
|
} while (ugyldigTall);
|
|
|
|
// Alternativ 3:
|
|
// Noe lignende Morten sin metode.
|
|
|
|
var gjeldendeTall = 0.0;
|
|
do
|
|
{
|
|
Console.WriteLine("Skriv inn et tall:");
|
|
|
|
/**
|
|
* double.Parse() kan feile om den ikke klarer å konvertere
|
|
* tekst til en 'double'. Dette gjør basic error handling og tillatter koden
|
|
* til å fortsette selv om programmet ikke får til å konvertere tallet.
|
|
*/
|
|
try
|
|
{
|
|
gjeldendeTall = double.Parse(Console.ReadLine());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Ignorer exception og gå videre.
|
|
// Selvfølgelig bør dette egentlig logges, men hvem gidder det
|
|
continue;
|
|
}
|
|
} while (gjeldendeTall < 5 || gjeldendeTall > 54.99);
|
|
}
|
|
}
|
|
}
|