您现在的位置是:首页 > 正文

2022年6月29日--使用C#迈出第一步--使用 C# 中的“if”、“else”和“else if”语句向代码添加决策逻辑

2024-02-01 00:14:53阅读 2

了解如何通过评估布尔表达式来为代码的执行路径创建分支。

简介

通过 C# 编程语言,你可以构建采用决策逻辑的应用程序。 通过分支逻辑,你的应用程序可根据一组条件执行不同的指令。

使用if语句

运用最广泛的分支语句是 if 语句。 if 语句依赖布尔表达式,后者用一组括号括起来。 如果表达式为 true,则执行 if 语句后面的代码。 如果表达式为 false,则跳过 if 语句后面的代码。

使用if语句创建随机数游戏

我们将使用 Random.Next() 方法来模拟抛掷三个六面骰子。

  • 如果抛掷任何两个骰子得到相同的值,则因两个骰子投出同样的点数获得两点奖励得分。
  • 如果抛掷全部三个骰子都得到相同的值,则因三个骰子投出同样的点数获得六点奖励得分。
  • 如果三个骰子投出的点数之和加上所有奖励点数大于等于 15,则你赢得比赛。 否则,就是你输了。

步骤1-编写代码以生成三个随机数字并在输出中显示它们

Random dice = new Random();

int roll1 = dice.Next(1, 7);
int roll2 = dice.Next(1, 7);
int roll3 = dice.Next(1, 7);

int total = roll1 + roll2 + roll3;

Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");

Dice roll: 2 + 2 + 2 = 6

步骤2-添加一个if语句,以基于total变量的值显示不同的消息

Random dice = new Random();

int roll1 = dice.Next(1, 7);
int roll2 = dice.Next(1, 7);
int roll3 = dice.Next(1, 7);

int total = roll1 + roll2 + roll3;

Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");

if (total > 14)
{
    Console.WriteLine("You win!");
}

if (total < 15)
{
    Console.WriteLine("Sorry, you lose.");
}

Dice roll: 5 + 5 + 3 = 13
Sorry, you lose.

什么是布尔表达式?

布尔表达式是返回布尔值(true 或 false)的任意代码。

string.Contains() 方法计算某个字符串是否包含另一个字符串

string message = "The quick brown fox jumps over the lazy dog.";
bool result = message.Contains("dog");
Console.WriteLine(result);

if (message.Contains("fox"))
{
    Console.WriteLine("What does the fox say?");
}

True
What does the fox say?

什么是代码块?

步骤3-再添加一个if语句来实现双倍奖励

Random dice = new Random();

int roll1 = dice.Next(1, 7);
int roll2 = dice.Next(1, 7);
int roll3 = dice.Next(1, 7);

int total = roll1 + roll2 + roll3;

Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");

if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
{
    Console.WriteLine("You rolled doubles! +2 bonus to total!");
    total += 2;
}

if (total >= 15)
{
    Console.WriteLine("You win!");
}

if (total < 15)
{
    Console.WriteLine("Sorry, you lose.");
}

Dice roll: 3 + 6 + 5 = 14
Sorry, you lose.

步骤4-再添加一个if语句来实现三倍奖励

Random dice = new Random();

int roll1 = dice.Next(1, 7);
int roll2 = dice.Next(1, 7);
int roll3 = dice.Next(1, 7);

int total = roll1 + roll2 + roll3;

Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");

if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
{
    Console.WriteLine("You rolled doubles! +2 bonus to total!");
    total += 2;
}

if ((roll1 == roll2) && (roll2 == roll3)) 
{
    Console.WriteLine("You rolled triples! +6 bonus to total!");
    total += 6;
}

if (total >= 15)
{
    Console.WriteLine("You win!");
}

if (total < 15)
{
    Console.WriteLine("Sorry, you lose.");
}

Dice roll: 1 + 1 + 5 = 7
You rolled doubles! +2 bonus to total!
Sorry, you lose.

逻辑上的问题以及改进代码的机会

回顾

使用“else”和“else if”语句

通过添加else和else if语句来改进代码并修复bug

Random dice = new Random();

int roll1 = dice.Next(1, 7);
int roll2 = dice.Next(1, 7);
int roll3 = dice.Next(1, 7);

int total = roll1 + roll2 + roll3;

Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");

if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
{
    Console.WriteLine("You rolled doubles!  +2 bonus to total!");
    total += 2;
}

if ((roll1 == roll2) && (roll2 == roll3))
{
    Console.WriteLine("You rolled triples!  +6 bonus to total!");
    total += 6;
}

if (total >= 15)
{
    Console.WriteLine("You win!");
}
else 
{
    Console.WriteLine("Sorry, you lose.");
}

Dice roll: 5 + 1 + 4 = 10
Sorry, you lose.

步骤1-使用if和else语句,而不是两个单独的if语句

int roll1 = 6;
int roll2 = 6;
int roll3 = 6;

int total = roll1 + roll2 + roll3;

Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");

if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
{
    if ((roll1 == roll2) && (roll2 == roll3))
    {
        Console.WriteLine("You rolled triples!  +6 bonus to total!");
        total += 6;
    }
    else
    {
        Console.WriteLine("You rolled doubles!  +2 bonus to total!");
        total += 2;
    }
}

if (total >= 15)
{
    Console.WriteLine("You win!");
}
else 
{
    Console.WriteLine("Sorry, you lose.");
}

Dice roll: 6 + 6 + 6 = 18
You rolled triples!  +6 bonus to total!
You win!

步骤2-使用嵌套消除双倍奖励和三倍奖励叠加的情形

 玩家应该只赢取一个奖品:

  • 如果玩家的分数大于等于 16,则赢得一辆新车。
  • 如果玩家的分数大于等于 10,则赢得一台新的笔记本电脑。
  • 如果玩家的分数正好为 7,则赢得一次旅行机会。
  • 否则,玩家赢得一只小猫。

Random dice = new Random();

int roll1 = dice.Next(1, 7);
int roll2 = dice.Next(1, 7);
int roll3 = dice.Next(1, 7);

int total = roll1 + roll2 + roll3;

Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");

if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
{
    if ((roll1 == roll2) && (roll2 == roll3))
    {
        Console.WriteLine("You rolled triples!  +6 bonus to total!");
        total += 6;
    }
    else
    {
        Console.WriteLine("You rolled doubles!  +2 bonus to total!");
        total += 2;
    }
}

if (total >= 16)
{
    Console.WriteLine("You win a new car!");
}
else if (total >= 10)
{
    Console.WriteLine("You win a new laptop!");
}
else if (total == 7)
{
    Console.WriteLine("You win a trip for two!");
}
else
{
    Console.WriteLine("You win a kitten!");
}

Dice roll: 1 + 5 + 1 = 7
You rolled doubles!  +2 bonus to total!
You win a kitten!

步骤3-使用if、else和else if语句提供奖励,而不是显示胜败消息

 玩家应该只赢取一个奖品:

  • 如果玩家的分数大于等于 16,则赢得一辆新车。
  • 如果玩家的分数大于等于 10,则赢得一台新的笔记本电脑。
  • 如果玩家的分数正好为 7,则赢得一次旅行机会。
  • 否则,玩家赢得一只小猫。

Random dice = new Random();

int roll1 = dice.Next(1, 7);
int roll2 = dice.Next(1, 7);
int roll3 = dice.Next(1, 7);

int total = roll1 + roll2 + roll3;

Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");

if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
{
    if ((roll1 == roll2) && (roll2 == roll3))
    {
        Console.WriteLine("You rolled triples!  +6 bonus to total!");
        total += 6;
    }
    else
    {
        Console.WriteLine("You rolled doubles!  +2 bonus to total!");
        total += 2;
    }
}

if (total >= 16)
{
    Console.WriteLine("You win a new car!");
}
else if (total >= 10)
{
    Console.WriteLine("You win a new laptop!");
}
else if (total == 7)
{
    Console.WriteLine("You win a trip for two!");
}
else
{
    Console.WriteLine("You win a kitten!");
}

回顾

挑战

Random random = new Random();
int daysUntilExpiration = random.Next(12);
int discountPercentage = 0;

// Your code goes here

Console.WriteLine(daysUntilExpiration);
if(daysUntilExpiration==1)
{
    discountPercentage=20;
    Console.WriteLine("Your subscription expires within a day!");
    Console.WriteLine("Renew now and save {0}%!",discountPercentage);
}
else if(daysUntilExpiration>1&&daysUntilExpiration<=5)
{
    discountPercentage=10;
    Console.WriteLine("Your subscription expires in {0} days.",daysUntilExpiration);
    Console.WriteLine("Renew now and save {0}%!",discountPercentage);
}
else if(daysUntilExpiration<=10)
{
    Console.WriteLine("Your subscription will expire soon. Renew now!");
}
else
{
    Console.WriteLine("Your subscription has expired.");
}

9
Your subscription will expire soon. Renew now!

11
Your subscription has expired.

5
Your subscription expires in 5 days.
Renew now and save 10%!

解决方案:

Random random = new Random();
int daysUntilExpiration = random.Next(12);
int discountPercentage = 0;

if (daysUntilExpiration == 0)
{
    Console.WriteLine("Your subscription has expired.");
}
else if (daysUntilExpiration == 1)
{
    Console.WriteLine("Your subscription expires within a day!");
    discountPercentage = 20;
}
else if (daysUntilExpiration <= 5)
{
    Console.WriteLine($"Your subscription expires in {daysUntilExpiration} days.");
    discountPercentage = 10;
}
else if (daysUntilExpiration <= 10)
{
    Console.WriteLine("Your subscription will expire soon. Renew now!");
}

if (discountPercentage > 0)
{
    Console.WriteLine($"Renew now and save {discountPercentage}%.");
}

网站文章

  • vue——filter过滤器

    vue——filter过滤器

    参数是10,显示是100效果如下:1、局部过滤器关键性代码2、全局过滤器附加:多个过滤器串联:{{ message | filterA | filterB }}说明:filterA被定义为接收单个参数的过滤器函数,表达式message的值将作为参数传入到函数中。然后继续调用同样被定义为接收单个参数的过滤器函数filterB,将filterA的结果传递到filterB中。...

    2024-02-01 00:14:46
  • C语言|深入浅出讲解int转换为float全过程(附2017年统考大题案例)

    C语言|深入浅出讲解int转换为float全过程(附2017年统考大题案例)

    int转换为float类型为什么会发生精度损失? 精度损失的详细过程究竟是什么样的? 什么样情况float会发生精度损失?没有弄懂2017年浮点数统考大题? 这一篇用2017年统考大题案例帮你更深的理解浮点数的存储规则。

    2024-02-01 00:14:15
  • [洛谷5464]缩小社交圈

    xx 转载于:https://www.cnblogs.com/lxzl/p/11233989.html

    2024-02-01 00:14:10
  • 交叉表查询(普通行列转换)

    问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成(得到如下结果): 姓名 语文 数学 物理 ---- ---- ---- ---- 李四 74  84  94 张三 74  83  93 ------------------

    2024-02-01 00:14:05
  • WIN32 API实现edit文本框的printf()函数

    在进行WIN32 API使用文本框编程时,很多情况下需要输出调试信息,或是直接输出一些有用的信息。我们通常使用SetWindowText()函数实现,但是其中的内容无法格式化修改,所以一般还要使用wsprintf()函数进行预格式化,最后还需要发送EM_SCROLL消息使滚动条显示到最下方,这就显得非常繁琐,往往要重复使用多次,失去了效率。修改之前的代码往往是这样的:GetLocalTi...

    2024-02-01 00:13:33
  • V8 引擎中的 JavaScript 数组实现分析与性能优化

    数组是 JavaScript 语言的一项基本功能,几乎每 个 JavaScript 应用程序中都会大量应用数组。由于 V8 的源程序公开,其运行机制可以通过分析其源程 序来深入了解。通过分析 Java...

    2024-02-01 00:13:28
  • Mysql学习-DQL

    DQL、SQL、Mysql

    2024-02-01 00:13:21
  • Shader(着色)

    Shader(着色)

    Shader(着色)

    2024-02-01 00:12:52
  • Ajax请求数据四部曲 cors解决跨域问题

    Ajax请求数据四部曲 cors解决跨域问题

    2024-02-01 00:12:47
  • 2021-06-10

    2021-06-10

    linux内核源码下载地址官网链接:https://www.kernel.org/HTTP https://www.kernel.org/pub/ GIT https://git.kerne...

    2024-02-01 00:12:11