【问题标题】:Checking if input is correct type java检查输入是否正确类型java
【发布时间】:2018-04-14 14:19:47
【问题描述】:
    System.out.println("What letter should the word begin with?");
        char letter = input.next().charAt(0);
        if(letter != ''){
            throw new InputMismatchException("Please input a letter");
        }

我想检查用户是否输入了字符串/字符以外的任何内容。如果他们有我想抛出一个表示输入错误的异常。这是我当前的代码,但就目前而言它无法编译。

【问题讨论】:

  • 用户可以输入的所有内容都是一个字符。除了字符之外,没有其他方法可以输入。您需要告诉我们您的 对 char 的定义是什么。但是,您至少阅读过 java.lang.Character 的 javadoc 吗?
  • 你的计划的总体目标是什么?
  • 每个输入都可以解释为一个字符,因为每个字符、每个数字和每个标点符号都是一个 ascii 字符。正如@TimBiegeleisen 所说,您必须告诉该计划的目标是什么,才能给您一些建议。
  • @J.Lorenzo 实际上,它们中的大多数都不是 ASCII 字符。 ASCII 仅支持 127 个字符。
  • 因此,您希望用户在“A”和“Z”之间输入一个字母。这与字符不同。 '1' 是一个字符。 'é' 是一个字符。 “????”是一个字符。所以你想要if (letter >= 'A' && letter <= 'Z')。

标签: java types error-handling throw


【解决方案1】:

你可以检查letter是不是这样的字母:

if ((letter >= 'A' && letter <= 'Z') || (letter >= 'a' && letter <= 'z'))

实际上,Scanner 有这个方便的 next(String pattern) 重载,如果输入与模式不匹配,它会自动抛出 InputMismatchException:

char letter = input.next("[a-zA-Z]").charAt(0);

[a-zA-Z] 是这里使用的pattern。它接受从 a 到 z 或从 A 到 Z 的任何字符。

【讨论】:

  • 非常感谢!我已经解决了这个问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多