【问题标题】:reading in a string and printing a char读入一个字符串并打印一个字符
【发布时间】:2020-02-28 14:27:54
【问题描述】:

我应该读入一个字符串,将其转换为小写,然后返回字符串中的第一个字符。如果第一个字符不是字符串,我应该打印\0。

我试过了:

String ch = sc.nextLine();
char c = ch.charAt(0);
if (Character.isLetter(c)) {
    ch = ch.toLowerCase();
    c = ch.charAt(0);
    return c;
}
return '\0';

【问题讨论】:

  • 你的代码怎么失败了?请将您的代码的实际结果放在您的问题中。
  • 我收到了这个java.lang.StringIndexOutOfBoundsException: String index out of range: 0
  • 这意味着你传递给你的方法的字符串是.equals("")。试试打电话methodName(Apple) 什么的
  • 在哪里使用.equals()?我在哪里调用方法名称

标签: java string arraylist char


【解决方案1】:

该异常意味着您的扫描仪没有找到任何可以从其源返回的内容。 java中的字符串不像C字符串那样至少有一个字符('\0')。您可以通过以下添加来保护程序免于失败:

    try
    {
        String ch = sc.nextLine();
        ch = ch.toLowerCase();
        char c = ch.charAt(0);
        if (Character.isLetter(c))
        {
            return c;
        }
        return '\0';
    }
    catch(StringIndexOutOfBoundsException ex)
    {
        System.out.println("You have entered an empty string");
    }
}

【讨论】:

    【解决方案2】:

    您需要将char 变量更改为String 变量和String.valueOf(c),然后才能返回它们。

    String ch = sc.nextLine();
    char c = ch.charAt(0);
          if (Character.isLetter(c)) {
                ch = ch.toLowerCase();
                c = ch.charAt(0);
                return String.valueOf(c);
            }
       return String.valueOf('\0');
    }
    
    

    【讨论】:

    • 那会返回一个字符串,它需要返回一个字符
    • 那为什么原版不行呢?它返回char
    • 原文打印出这个错误Im getting this java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 2013-02-23
    • 1970-01-01
    • 2021-02-24
    相关资源
    最近更新 更多