ssd3:Practical Quiz 2 Debugging Class DNASequence

    技术2024-10-15  58

    /** * This class represents a DNA sequence of nucleotides 'A', 'T', 'C' and 'G' * as a sequence of characters in a {@link String} object. * * @author  author name * @version  1.0.0 */public class DNASequence  {

     /* Contains the sequence of nucleotides. */ private String  sequence;

     /* Contains the number of nucleotide A */ private int numberOfA;

     /* Contains the number of nucleotide T */ private int numberOfT;

     /* Contains the number of nucleotide C */ private int numberOfC;

     /* Contains the number of nucleotide G */ private int numberOfG;

     /**  * Test driver for class <code>DNA</code>.  *  * @param args  not used.  */ public static void  main(String[] args)  {

      String s = "ATTATCGGGGTAA";  DNASequence dnaSequence = new DNASequence(s);

      if ((dnaSequence.getNumberOfA() == 4)    && (dnaSequence.getNumberOfT() == 4)    && (dnaSequence.getNumberOfC() == 1)    && (dnaSequence.getNumberOfG() == 4)) {   System.out.println("Test case 1:  get methods passed/n");  } else {   System.out.println("Test case 1:  get methods failed !!!/n");  }

      if (dnaSequence.twoConsecutive('T')) {   System.out.println("Test case 2: method twoConsecutive passed/n");  } else {   System.out.println(    "Test case 2: method twoConsecutive failed !!!/n");  }

      if (dnaSequence.twoConsecutive('A')) {   System.out.println("Test case 3: method twoConsecutive passed/n");  } else {   System.out.println(    "Test case 3: method twoConsecutive failed !!!/n");  }

      if (!dnaSequence.twoConsecutive('C')) {   System.out.println("Test case 4: method twoConsecutive passed/n");  } else {   System.out.println(    "Test case 4: method twoConsecutive failed !!!/n");  } }

     /**  * Constructs a <code>DNASequence</code> object that represents the sequence  * of nucleotides indicated by the chars in the <code>string</code> argument  * and counts the occurrences of each nucleotide in the sequence.  *  * @param initialSequence  a string with the initial sequence of nucleotides.  */ public  DNASequence(String initialSequence)  {

      sequence = initialSequence;  countNucleotides(); }

     /*  * Counts the occurrences of each nucleotide in the DNA sequence and then  * updates the values of the variables numberOfA, numberOfT, numberOfC, and  * numberOfG .  */ private void  countNucleotides()  {

     /* int numberOfA = 0;  int numberOfT = 0;  int numberOfC = 0;  int numberOfG = 0;   */    numberOfA = 0;  numberOfT = 0;  numberOfC = 0;  numberOfG = 0;

      int index = 0;

      while (index < sequence.length()) {

       char nucleotide = sequence.charAt(index);

       if (nucleotide == 'A') {    numberOfA++;   } else if (nucleotide == 'T') {    numberOfT++;   } else if (nucleotide == 'C') {    numberOfC++;   }/* else if (nucleotide == 'G') {    numberOfC++;   } */   else if (nucleotide == 'G') {    numberOfG++;   }   index++;  }

      return; }

     /**  * Obtains the number of occurrences of nucleotide A in the sequence.  *  * @return  the number of occurrences of nucleotide A.  */ public int  getNumberOfA( )  {

      return numberOfA; }

     /**  * Obtains the number of occurrences of nucleotide T in the sequence.  *  * @return  the number of occurrences of nucleotide T.  */ public int  getNumberOfT( )  {

      return numberOfT; }

     /**  * Obtains the number of occurrences of nucleotide C in the sequence.  *  * @return  the number of occurrences of nucleotide C.  */ public int  getNumberOfC( )  {

      return numberOfC; }

     /**  * Obtains the number of occurrences of nucleotide G in the sequence.  *  * @return  the number of occurrences of nucleotide G.  */ public int  getNumberOfG( )  {

      return numberOfG; }

     /**  * Checks if the nucleotide specified by the argument occurs in two  * consecutive locations in the DNA sequence.  *  * @param input a <code>char</code> that represent the nucleotide.  * @return  <code>true</code> if the specified nucleotide occurs two  *          consecutive locations in the sequence.   *          Returns <code>false</code> otherwise.  */ public boolean  twoConsecutive(char input)  {

      int index = 1;

     /* while (index < sequence.length() - 1) {  */    while (index < sequence.length()) {

       int indexOfFirstNucleotide = index - 1;

       char firstNucleotide = sequence.charAt(indexOfFirstNucleotide);   char secondNucleotide = sequence.charAt(index);

      /* if ((firstNucleotide == input) || (secondNucleotide == input)) {

        return true;

       }  */      if ((firstNucleotide == input) && (secondNucleotide == input)) {

        return true;

       }        index++;  }

      return false; }}

     

     

     

    考察:

    对程序进行调试。

    调试的快捷操作:F5 起调试

                            F9 设断点

                            F10 断点处开始调试 跳过函数

                            F11 进入函数内部

    最新回复(0)