如何打印格式正确的字符串

时间:2019-01-17 20:44:29

标签: java eclipse testing junit

我正在进行测试驱动开发,因此我创建了一个需要向该函数发送字符串数组的案例,该函数将检查该数组是否包含大写字母字符串,如果存在则需要打印所有字符串,例如“ 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;
}

2 个答案:

答案 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;
}

您可以为每个字符串调用此函数,然后继续。