【问题标题】:How can I modify my code to only accept a certain data type?如何修改我的代码以仅接受某种数据类型?
【发布时间】:2017-09-29 08:34:09
【问题描述】:

我可以做些什么来修改这个,有没有什么java函数呢? 需要做什么才能使其只接受字符并返回其他数据类型的错误消息?

import java.util.*;
    public class problem5
    {
      public static void main(String[] args)
      {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter a letter from the alphabet: ");
        char letter = in.next(".").charAt(0);
        char vowels[] = {'A','E','I','O','U','a','e','i','o','u'};
        int vowelcount = 0;
        for (int i = 0; i < 10; i++)
        {
          if (vowels[i] == letter)
          {
            vowelcount++;
          }
        }
        if (vowelcount > 0)
        {
          System.out.println("You entered a vowel.");
        }
        else
        {
          System.out.println("You entered a consonant.");
        }
      }
    }

【问题讨论】:

标签: java


【解决方案1】:

我需要拒绝超过 1 个字符的输入 – Nico Dela Cruz

您只需要检查输入的长度

String input = in.next(".");
if(input.length == 1){
    char letter = input.charAt(0);
    ...
}

如果您想添加某种错误消息,请添加else

要检查输入是否只接受letter,您可以使用Character.isLetter(char) 为您检查UNICODE 中的每个“字母”。

如果您只想接受a-z 和/或A-Z 的范围,您可以自己使用 if 条件或使用正则表达式。

【讨论】:

  • 谢谢!但是如何拒绝数字/整数作为输入?
  • @NicoDelaCruz 你刚刚说你想拒绝String 太久......对于其余的拒绝,请检查建议的重复项或上面的答案。这是一个反复出现的问题
【解决方案2】:

将循环包装在如下语句中:

if (Character.isLetter(letter)){

并在最后加上 else 子句以表示您的错误

编辑:

OP 稍微改变了他们的问题,所以你可以:

-只接受输入的第一个字符:

char letter = in.next().trim().charAt(0);

-或者如 AxelH 上面所说,只有在用户输入一个字符时才继续:

if(input.length == 1){
    char letter = input.charAt(0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 2010-10-26
    相关资源
    最近更新 更多