Kotlin扫描仪-验证nextLine用户输入

问题描述

首先对标题感到抱歉,没想到别的。 我目前正在完成有关JetBrains Hyperskill的项目,该项目是单位转换器,用户可以在其中转换重量,长度和温度单位。我几乎完成了该项目,转换工作正常,但是用户输入有问题。

我有一个枚举类,其中包含所有单位-

enum class Units

用户输入由以下部分组成:

  <number> + 
    <(unit name) or (degree + unit name) or (degrees + unit name)> +
    <random word like "to" or "in"> +
    <(unit name) or (degree + unit name) or (degrees + unit name)>

因此,用户可以输入以下内容:

  • 1 C到F
  • 1摄氏度到开尔文

但是,也可以输入以下内容:

  • 1摄氏度到开尔文
  • 5摄氏度至华氏度

每个输入都保存在一个变量中,用户可以在单行

中键入
  • val amount = scan.toDouble()-转换金额
  • val source = scan.nextLine().toUpperCase()-这应该读取诸如“摄氏度”和“摄氏度”之类的输入内容
  • val word = scan.next()-随机词
  • val target = scan.nextLine().toUpperCase()-这也应该读取“摄氏”和“摄氏度”之类的输入

这些是每种单位类型的有效输入:

enter image description here

我的问题- 我该如何使next()或nextLine()既适用于“华氏度”又适用于“华氏度”(有效输入),但是如果用户键入其他内容,则会在控制台中输出诸如“解析错误”之类的错误消息?

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)