我正在进行测试驱动开发,因此我创建了一个需要向该函数发送字符串数组的案例,该函数将检查该数组是否包含大写字母字符串,如果存在则需要打印所有字符串,例如“ name,name,name和name都很棒”。因此,在最后一个字符串之前应加上“ and”。
有时会给我死代码错误,因为还有其他情况可能会干扰此情况的执行。
测试用例
@Test
void testAcceptsAJumbleOfUpperCaseAndLowerCase() {
theAmazingPeter obj = new theAmazingPeter();
String[] arr = {"Peter","GUNEET"};
String result = obj.AmazingPerson(arr);
assertEquals("Peter, and GUNEET are amazing",result);
}
}
声明
else {
for (int i = 0; i < names.length; i++) {
if (names.length >= 1 && names[i].equals(names[i].toUpperCase())) {
if (i > 0) {
sb.append(", ");
if (i == names.length - 1) {
sb.append("and ");
}
}
sb.append(names[i]);
}
System.out.println(sb.toString() + " are amazing");
}
String result = sb.toString() + " are amazing";
return result;
}
答案 0 :(得分:1)
如果需要检查字符串是否包含大写字母,则需要按以下方式实现:
StringBuffer sb = new StringBuffer();
char ch;
for (int i = 0; i < names.length; i++) {
if (Character.isUpperCase(names[i].charAt(0))) {
if (i == names.length - 1) {
sb.append(" and " + names[i]);
} else if (i == names.length - 2) {
sb.append(names[i]);
} else {
sb.append(names[i] + ", ");
}
}
}
System.out.println(sb.toString() + " are amazing");
String result = sb.toString() + " are amazing";
return result;
答案 1 :(得分:0)
您的代码中的这一行是错误的:
if(names.length >= 1 && names[i].equals(names[i].toUpperCase()))
仅当字符串的所有字母均为大写字母时,此if语句才成立。
例如:如果names[i]
包含"Peter"
,则names[i].toUpperCase()
等于"PETER"
,表达式将返回false
。但是,您要接受此字符串,因为它包含大写字母。
相反,您可以使用Character.isUpperCase(char)
方法。
public boolean containsUpper(String s){
for (int i = 0 ; i< s.length(); i++){
if(Character.isUpperCase(s.charAt(i)))
return true;
}
return false;
}
您可以为每个字符串调用此函数,然后继续。