Entry level of c# (REALLY).
Today I got the problem to create a console app that allows someone to enter their surname, name and age. If they are under 18 they should be classified as "Youth", if they are 18 or above they are adults. The only catch is it should be done with very little knowledge and A BASIC understanding of if usage. AND using else is forbidden.
The code I came up with:
static void Main(string[] args)
{
Console.WriteLine("Vul uw voornaam, familienaam en leeftijd in.");
string voorNaam = Console.ReadLine();
string familieNaam = Console.ReadLine();
int leeftijd = int.Parse(Console.ReadLine());
string groepJeugd = "Jeugd";
string groepVolwassen = "Volwassen";
if (leeftijd < 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
}
else if (leeftijd >= 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
}
Console.ReadLine();
}
Small note, I don't know if it's correct to use "else if" If its not allowed to use else, I've thought about using switch, but since the lesson was about if, else etc... I dont think its correct to use it here.
CodePudding user response:
Set a default value of adult and override if under 18.
static void Main(string[] args)
{
Console.WriteLine("Vul uw voornaam, familienaam en leeftijd in.");
string voorNaam = Console.ReadLine();
string familieNaam = Console.ReadLine();
int leeftijd = int.Parse(Console.ReadLine());
string group = "Volwassen";
if(leeftijd < 18)
group = "Jeugd";
Console.WriteLine($"{voorNaam} {familieNaam}: {group}");
Console.ReadLine();
}
CodePudding user response:
Hope using return
isn't forbidden
static void Main(string[] args)
{
Console.WriteLine("Vul uw voornaam, familienaam en leeftijd in.");
string voorNaam = Console.ReadLine();
string familieNaam = Console.ReadLine();
int leeftijd = int.Parse(Console.ReadLine());
string groepJeugd = "Jeugd";
string groepVolwassen = "Volwassen";
if (leeftijd < 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
Console.ReadLine();
return;
}
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
Console.ReadLine();
}
CodePudding user response:
If you use if
instead of the else if
, it'll work too.
So there'll be 2 if conditions in your code.
if (leeftijd < 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
}
if (leeftijd >= 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
}
Another way:
You can return once you get the first condition true.
In this case, you won't need another condition.
if (leeftijd < 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
return ;
}
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
CodePudding user response:
1st way
var output=string.Empty;
if (leeftijd < 18) output= $"{voorNaam} {familieNaam}: {groepJeugd}";
if (leeftijd >= 18) output= $"{voorNaam} {familieNaam}: {groepVolwassen}";
Console.WriteLine(output);
2nd way, doesn't use else, but not sure if it allowed
var output = leeftijd < 18 ? $"{voorNaam} {familieNaam}: {groepJeugd}":
$"{voorNaam} {familieNaam}: {groepVolwassen}";
Console.WriteLine(output);
CodePudding user response:
hello i used this ?:
operator to do this and got true or false
(leeftijd >= 18 ? groepVolwassen : groepJeugd)
/* if "leeftijd" is >= 18 put "groepVolwassen" and else with : put "groepJeugd" */
and its finally
Console.WriteLine($"{voorNaam} {familieNaam}: {(leeftijd >= 18 ? groepVolwassen : groepJeugd)}");
i hope you it help you if u want dont use else
CodePudding user response:
I think this is a trick question, there is technically no other option with such simple code, the compiler makes this choice for you. However, you can obfuscate it in several ways.
if / else
if / else if
<-¯\_(ツ)_/¯
if return
?:
operator <- if / else anywayswitch
while loop return
<- if you want to get really weird
Note : You could possibly use an exception to branch, by causing any number of weird situations like divide by 0 exceptions, however I have left that absurdity out
if / else
if (leeftijd < 18)
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
else
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
Console.ReadLine();
if return
if (leeftijd < 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
Console.ReadLine();
return;
}
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
Console.ReadLine();
Conditional Operator
Console.WriteLine(
leeftijd < 18
? $"{voorNaam} {familieNaam}: {groepJeugd}"
: $"{voorNaam} {familieNaam}: {groepVolwassen}");
Console.ReadLine();
switch
switch (leeftijd)
{
case < 18:
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
break;
case >= 18:
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
break;
}
Console.ReadLine();
while loop return
while (leeftijd < 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
Console.ReadLine();
return;
}
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
Console.ReadLine();
However
In all cases (except for the exception), the compiler will convert such simple cases to something like the following anyway
if (num < 18)
{
...
Console.WriteLine(..);
Console.ReadLine();
}
else
{
...
Console.WriteLine(..);
Console.ReadLine();
}
The short story, is the compiler only has a bunch of comparative operators no matter how you branch, it does have a switching type instruction, though in such a simple case it compiles it to an if
anyway :/
Beq
- Branch on equalBne
- Branch on not equalBge
- Branch on greater than or equalBgt
- Branch on greater thanBle
- Branch on less than or equalBlt
- Branch on less than