不允许使用其他,不知道我需要如何处理这个问题



c#入门级(真的)。

今天我遇到了一个问题,创建一个控制台应用程序,允许人们输入他们的姓氏,名字和年龄。如果他们未满18岁,他们应该被归类为"青少年",如果他们是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 groepJeugd = "Jeugd";
string groepVolwassen = "Volwassen";

if (leeftijd < 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
}
else if (leeftijd >= 18) 
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
}
Console.ReadLine();
}

小提示,我不知道用"else if"是否正确。如果不允许使用else,我考虑过使用switch,但由于课程是关于If, else等…我认为在这里用它是不对的。

设置成人的默认值,未满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();
}

希望不禁止使用return

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();
}

如果你使用if而不是else if,它也会工作。所以在你的代码中会有2个if条件

if (leeftijd < 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
}
if (leeftijd >= 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
}

的另一种方法:

一旦第一个条件为真,就可以返回。

在这种情况下,您不需要另一个条件。

if (leeftijd < 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
return ;
}
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");

第一步

var output=string.Empty;
if (leeftijd < 18) output= $"{voorNaam} {familieNaam}: {groepJeugd}";
if (leeftijd >= 18) output= $"{voorNaam} {familieNaam}: {groepVolwassen}";
Console.WriteLine(output);

第二种方式,不使用else,但不确定是否允许

var output = leeftijd < 18 ? $"{voorNaam} {familieNaam}: {groepJeugd}":
$"{voorNaam} {familieNaam}: {groepVolwassen}";
Console.WriteLine(output);

hello,我使用?:操作符来执行此操作,并获得true或false

(leeftijd >= 18 ? groepVolwassen : groepJeugd)
/* if "leeftijd" is >= 18 put "groepVolwassen" and else with : put "groepJeugd" */

及其最终

Console.WriteLine($"{voorNaam} {familieNaam}: {(leeftijd >= 18 ? groepVolwassen : groepJeugd)}");

我希望它能帮助你,如果你不想使用else

我认为这是一个狡猾的问题,技术上没有其他的选择,这样简单的代码,编译器为你做这个选择。但是,您可以通过几种方式混淆它。

  • if / else
  • if / else if<-¯_(ツ)_/¯
  • if return
  • ?:operator <- if/else anyway
  • switch
  • while loop return<-如果你想得到真的
  • 子>

<<em>注意:你可以使用一个异常来进行分支,通过引起任何奇怪的情况,比如除以0异常,但是我把这个荒谬的地方删掉了

if/else

if (leeftijd < 18)
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
else 
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
Console.ReadLine();

如果返回

if (leeftijd < 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
Console.ReadLine();
return;
}
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
Console.ReadLine();

条件操作符

Console.WriteLine(
leeftijd < 18 
? $"{voorNaam} {familieNaam}: {groepJeugd}" 
: $"{voorNaam} {familieNaam}: {groepVolwassen}");
Console.ReadLine();

switch (leeftijd)
{
case < 18:
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
break;
case >= 18:
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
break;
}
Console.ReadLine();

while循环返回

while (leeftijd < 18)
{
Console.WriteLine($"{voorNaam} {familieNaam}: {groepJeugd}");
Console.ReadLine();
return;
}
Console.WriteLine($"{voorNaam} {familieNaam}: {groepVolwassen}");
Console.ReadLine();
然而

在所有情况下(例外情况除外),编译器都会将这些简单的情况转换为如下内容

if (num < 18)
{
...
Console.WriteLine(..);
Console.ReadLine();
}
else
{
...
Console.WriteLine(..);
Console.ReadLine();
}

简而言之,无论你如何分支,编译器都只有一堆比较操作符,它确实有一个切换类型指令,尽管在这种简单的情况下,它还是将其编译为if:/

  • Beq- Branch on equal
  • Bne-分支不等于
  • Bge-分支大于或等于
  • Bgt-分支大于
  • Ble-分支小于或等于
  • Blt-分支小于

最新更新