针对代码失败的测试案例改进代码

时间:2019-01-21 03:57:43

标签: java

我写了下面的代码,我想确定我的代码失败的测试用例,我想确定我的测试用例失败的可能的测试用例。所以我会即兴创作,此外,我也想增强它的意思,也建议我提高性能的最佳实践。

最后,在下面的代码中,我有一个方法returnFinalComplement(String reverseStr),它返回补数,为了计算补数,我有两种方法,两者都在做相同的工作,我正在使用方法1弯曲,但是我想要了解方法2,哪种方法可以通过所有测试用例。

 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.SortedSet;
  import java.util.TreeSet;


 class DNAString {

     private final static Character[] DATASET = {'A', 'C', 'G', 'T'};
     private final static int MIN_RANGE = 0;
     private final static int MAX_RANGE = 1000;
     private final static String INVALID_CHAR = "Invalid input,not matched 
     with dataset";
     private final static String CHAR_LENGTH_EXCEEDS = "Input does not 
     allow to be exceeds more than " + MAX_RANGE + " characters";

  private static String returnFinalComplement(String reverseStr) {
          //APPROACH-1
          StringBuilder finalStr = new StringBuilder();
          for (char c : reverseStr.toCharArray()) {
           finalStr.append(
                c == 'G' ? 'C'
                        : c == 'C' ? 'G'
                                : c == 'T' ? 'A'
                                        : c == 'A' ? 'T'
                                                : c
              );

         }
         return finalStr.toString();


        //APPROACH-2


      char[] charlist = list.toCharArray();
    for (int i = 0; i < charlist.length; i++) {
        switch (charlist[i]) {
            case 'A': {
                charlist[i] = 'T';
            }
            break;
            case 'T': {
                charlist[i] = 'A';
            }
            break;
            case 'G': {
                charlist[i] = 'C';
            }
            break;
            case 'C': {
                charlist[i] = 'G';
            }
            break;
        }
    }
    return new String(charlist);



}


public static boolean validateInput(String input) {
    List<Character> chars = new ArrayList<>();
    for (char c : input.toCharArray()) {
        chars.add(c);
    }
    boolean result = false;
    SortedSet<Character> mySet = new TreeSet<>(chars);
    for (int i = 0; i <= mySet.size();) {
        for (Character c : mySet) {
            result = Objects.equals(c, DATASET[i]);
            i++;
            if (!result) {
                break;
            }
        }
        if (result) {
            return result;
        } else {
            break;
        }
    }
    return result;

}

public static String reverseIt(String source) {
    int i, len = source.length();
    StringBuilder dest = new StringBuilder(len);
    for (i = (len - 1); i >= 0; i--) {
        dest.append(source.charAt(i));
    }
    return dest.toString();
}

public static void main(String[] args) throws IOException {

          BufferedReader readInput = new BufferedReader(new 
      InputStreamReader(System.in));
       String source = readInput.readLine();
       if (source.length() > MIN_RANGE && source.length() <= MAX_RANGE) {
        boolean validateInput = validateInput(source);
        if (validateInput) {
       //                String reverseString = reverseIt(source);
            String reverseString = reverseIt(source);
            System.out.println(returnFinalComplement(reverseString));
     //                String revereStringComplement = 
      returnFinalComplement(reverseString);
        } else {
            System.out.println(INVALID_CHAR);
            }
        } else {
        System.out.println(CHAR_LENGTH_EXCEEDS);
            }
        }
    }

0 个答案:

没有答案
相关问题