轨道
/
Java
Java
/
练习
/
Two Fer
Two Fer

Two Fer

简单

简介

在某些英语口音里,如果把“two for”说得快一些,听起来就像“two fer”。Two-for-one 是一种说法,意思是买一个还能免费再得一个。所以“two-fer”这个说法往往暗示着买一送一的优惠。

想象有一家面包店,在节日期间推出了这样的优惠:花一份钱就能买到两块饼干(“two-fer one!”)。你接受了这个优惠,并且(非常大方地)决定把多出来的那块饼干送给排队中的另一个人。

说明

你的任务是决定:在把多出来的那块饼干送出去时,你要说些什么。

如果你知道对方的名字(例如,对方叫 Do-yun),那么你要说:

One for Do-yun, one for me.

如果你不知道对方的名字,那就改说 you。

One for you, one for me.

下面是一些例子:

名字 对话
Alice One for Alice, one for me.
Bohdan One for Bohdan, one for me.
One for you, one for me.
Zaphod One for Zaphod, one for me.

实现

开始之前,请确保你了解如何编写能通过测试用例的代码。 想了解更多背景,可以看看这篇教程。

大多数 Java 练习都包含多个测试用例。 这些用例的结构支持一种非常有用的流程,叫做测试驱动开发(TDD)。 TDD 会重复一个结构化的循环,帮助程序员一点一点地构建复杂功能,而不是一次性写完。 这个循环可以这样描述:

  1. 添加一个测试,用它描述你当前代码还缺少的某一项期望功能。
  2. 运行测试,确认这个新添加的测试失败。
  3. 修改现有代码,直到:
    • 所有旧测试仍然通过;
    • 新测试也能通过。
  4. 清理你的代码,确保所有测试仍然通过。 这通常包括重命名变量、删除重复的逻辑片段、删除遗留的日志输出等。
  5. 回到第 1 步,直到实现所有期望的功能!

本 track 的测试文件包含你的解答要被判定为有效而需要通过的_全部_测试。 这似乎与上面描述的循环(一次只写一个测试)并不完全兼容。 不过,我们用来编写测试的工具 JUnit 提供了一个 @Disabled 注解,可以用它临时跳过已经写好的测试。 借助这个注解,我们确保交付给你的测试文件满足以下规则:

  • 任何测试文件中的第一个测试默认_不会_被跳过。
  • 任何测试文件中除第一个测试外的所有测试默认_都会_被跳过。

这样,你只要按照下面这些稍作修改的步骤,就能模拟 TDD 循环:

  1. 运行测试,确认当前_至多只有一个_测试失败。
  2. 修改现有代码,直到所有未被跳过的测试都通过。
  3. 清理你的代码,确保所有未被跳过的测试仍然通过。
  4. 删除测试文件中最上面的 @Disabled 注解。
  5. 回到第 1 步,直到没有测试被跳过,并且所有测试都通过!

来源

查看这道练习的来源。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Java Exercism

准备好开始 Two Fer 了吗?

注册 Exercism,借助 26 个概念158 个练习 和真人导师指导,学习并掌握 Java,全部免费。