-1

我有一个 Java 代码,如果通过了无元素字符串,则该代码不应该打印任何内容。目前,我的方法正在通过所有测试,但没有元素字符串的测试通过了。它给了我错误。代码如下。欢迎提出任何建议。

public static void printLetters(String text)
{

System.out.print(text.charAt(0));

for(int i=1;i<text.length();i++)
{
    System.out.print("-" + text.charAt(i));
}

System.out.println();
}
4

4 回答 4

1

我的猜测是您的异常弹出在您的线路上

System.out.print(text.charAt(0));

如果您传递一个空字符串,代码将尝试访问 char 处的字符0。在空字符串中没有第 0 个字符。

像这样的支票可能适合您:

public static void printLetters(String text)
{
    if (text != null && text.length() != 0)
    {
        System.out.print(text.charAt(0));

        for(int i=1;i<text.length();i++)
        {
            System.out.print("-" + text.charAt(i));
        }
    }
    System.out.println();
}
于 2013-10-23T22:51:02.300 回答
1

如果您通过,它应该给您NullPointerExceptionnull ,因为您text在检查它是否是之前null取消引用并且取消引用 null 会导致NPE.

if(text != null){
return;
}

对于空字符串测试,您可以执行以下操作

if(text.isEmpty()){
System.out.println(text);
}
于 2013-10-23T22:51:59.293 回答
0

您可以简单地添加一个 if 语句来检查text变量是否为空,如果是则返回。

您也可以删除第一个System.out.print(text.charAt(0));并进行更改,以便 for 循环从i = 0

public static void printLetters(String text)
{
    if (text == null)
    {
        return;
    }

    for(int i = 0; i < text.length(); i++)
    {
        System.out.print(text.charAt(i) + ",");
    }

    System.out.println();
}
于 2013-10-23T22:51:21.907 回答
0

出现此问题的原因是,如果您的字符串具有空指针,则 charAt(0) 将自动抛出 NullPointerException。尝试首先评估字符串是否具有空指针,如果不是,则可以继续使用 charAt(0) 和其他操作。

于 2013-10-23T22:58:21.033 回答