[英]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.