繁体   English   中英

反转字符串的测试用例

[英]test cases for reversing a string

我正在尝试进行质量检查采访,我想处理尽可能多的测试用例。 我相信我的方法适用于每种情况,但当输入为null我不确定如何处理该异常。 甚至在代码运行之前,编译器会先给我一个错误。 因此,我不确定如何处理该异常。 我看了四周, catch荷兰国际集团的NullPointerException ,不建议。 我将如何处理null输入。 另外,如果其他人可以想到其他测试用例,我将很乐意进行测试并对其进行研究!

这是我的测试用例:

""
"abcdef"
"abbbba"
null

不太确定如何处理

转义字符

"\n"  --> "n\"
"\t"  --> "t\"

特殊字符,例如

áe  -->  eá 

码:

public static String reverseStr(String str) {
    int len = str.length();
    if (len <= 0) {
        return "Empty String";
    }
    char[] strArr = new char[len];
    int count = 0;
    for (int i = len - 1; i >= 0; i--) {
        strArr[count] = str.charAt(i);
        count++;
    }
    return new String(strArr);
}

经过进一步的建议后,这里是更新的代码:

public static String reverseStr(String str) {
    if ( str == null ) {
          return null;
    }
    int len = str.length();
    if (len <= 0) {
        return "";
    }
    char[] strArr = new char[len];
    int count = 0;
    for (int i = len - 1; i >= 0; i--) {
        strArr[count] = str.charAt(i);
        count++;
    }
    return new String(strArr);
}

如果string为null,则编译器不会给您错误,但是在运行代码时,您将收到NullPointerException。 您的reverseStr方法可以检查

if ( str == null ) {
  return "null string passed in";
}

或者你可以做类似的事情

int len = (str != null) ? str.length() : 0

现在,空字符串和空字符串的长度都将为0。这取决于您是否想以不同的方式对待空字符串和空字符串。

对于null情况,您可以首先添加简单测试if(str==null) throw new IllegalArgumentException("arg must be not null")并向声明中添加throws IllegalArgumentException

您应该在方法中做的第一件事是检查无效性:

public static String reverseStr(String str) {
    if(str==null){
        return null;
    }
    else{
       //the rest of your code goes here
    }
}

我不明白,如果字符串为空,为什么您会返回"Empty String" 这意味着输入字符串为"gnirtS ytpmE"

如果字符串为空,则应返回一个空字符串。 如果字符串为null ,则可能应返回null (或引发异常)。

if (str == null) return null;
int len = str.length();
if (len == 0) return "";

当NPE(NullPointerException)为null时,它来自访问参数'str'。 如果将参数替换为'null',这是有意义的,因此看起来像这样:int len = null.length(); 这没有多大意义。 “ ||” 或运算符不同于“ |” 或运算符,因为如果第一个元素为true,则不会评估另一个操作数,因为可以确定整个结果。 在这种情况下利用此功能,可以确保安全地调用str.isEmpty(),因为它不能为空。

public static String reverseStr(String str) {
    if(null == str || str.isEmpty()){
        return "Empty String";
    }
    int len = str.length();

    char[] strArr = new char[len];
    int count = 0;
    for (int i = len - 1; i >= 0; i--) {
        strArr[count] = str.charAt(i);
        count++;
    }
    return new String(strArr);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM