循环中的Java布尔条件

循环中的Java布尔条件,java,arrays,loops,boolean,Java,Arrays,Loops,Boolean,我试图计算并返回两个长度相等的DNA序列不同的地方。例如,给定字符串“ATGT”和“GTGA”,结果应该是数组{true,false,false,true}。我得到了一个错误False/true不能解析为一个变量这是我到目前为止得到的 /** * Calculates and returns where two DNA sequences of equal lengths differ. For * example, given strings "ATGT" and "GTGA",

我试图计算并返回两个长度相等的DNA序列不同的地方。例如,给定字符串“ATGT”和“GTGA”,结果应该是数组{true,false,false,true}。我得到了一个错误False/true不能解析为一个变量这是我到目前为止得到的

/**
   * Calculates and returns where two DNA sequences of equal lengths differ. For
   * example, given strings "ATGT" and "GTGA", the result should be array
   * { true, false, false, true }.
   * 
   * @param dna1 a String representing a DNA sequence of arbitrary length (equal
   *          to dna2's length), containing only the characters A, C, G and T
   * @param dna2 a String representing a DNA sequence of arbitrary length (equal
   *          to dna1's length), containing only the characters A, C, G and T
   * @return an array of boolean values, of length equivalent to both
   *         parameters' lengths, containing true in each subscript where the
   *         parameter strings differ, and false where they do not differ
   */
  public static boolean[] mutationPoints(String dna1, String dna2) {
      boolean [] mutPoint =  new boolean [dna1.length()]; 
      for( int i = 0; i < i; i++) {
          if( dna1 != dna2) {
              mutPoint[i] = False; 
          }
          else if (dna1 == dna2) {
              mutPoint[i] = True; 
          }
      }
/**
*计算并返回两个长度相等的DNA序列不同的位置。对于
*例如,给定字符串“ATGT”和“GTGA”,结果应该是数组
*{真,假,假,真}。
* 
*@param dna1表示任意长度的DNA序列的字符串(等于
*到dna2的长度),仅包含字符A、C、G和T
*@param dna2表示任意长度的DNA序列的字符串(等于
*到dna1的长度),仅包含字符A、C、G和T
*@返回一个布尔值数组,其长度等于
*参数的长度,在
*参数字符串不同,如果不不同,则为false
*/
公共静态布尔[]变异点(字符串dna1、字符串dna2){
boolean[]mutPoint=新布尔值[dna1.length()];
for(int i=0;i
以下是一个简短的答案:

public static boolean[] mutationPoints(String dna1, String dna2) {
          boolean [] mutPoint =  new boolean [dna1.length()]; 
          for (int i = 0 ; i < mutPoint.length ; i++){
              mutPoint[i] = dna1.charAt(i) != dna2.charAt(i);
          }
    }
publicstaticboolean[]mutationPoints(字符串dna1、字符串dna2){
boolean[]mutPoint=新布尔值[dna1.length()];
对于(int i=0;i
您需要迭代
mutPoint.length
次(而不是循环中的
i
次)。您需要比较
i
索引处的字符(而不是
字符串)。您需要返回数组。例如

boolean[] mutPoint = new boolean[dna1.length()];
for (int i = 0; i < mutPoint.length; i++) {
    mutPoint[i] = dna1.charAt(i) != dna2.charAt(i);
}
return mutPoint;
boolean[]mutPoint=new boolean[dna1.length()];
对于(int i=0;i
或类似

char[] dna1arr = dna1.toCharArray();
char[] dna2arr = dna2.toCharArray();
boolean[] mutPoint = new boolean[dna1arr.length];
for (int i = 0; i < mutPoint.length; i++) {
    mutPoint[i] = dna1arr[i] != dna2arr[i];
}
return mutPoint;
char[]dna1arr=dna1.toCharArray();
char[]dna2arr=dna2.toCharArray();
boolean[]mutPoint=新布尔值[dna1arr.length];
对于(int i=0;i
尝试以下算法:

String dna1 = "ATGT";
        String dna2 = "GTGA";

        if(dna1.length() != dna2.length()) return;

        boolean [] mutPoint =  new boolean [dna1.length()];
        for( int i = 0; i < dna1.length(); i++) {
            if( dna1.charAt(i) == dna2.charAt(i)) {
                mutPoint[i] = false;
            }
            else {
                mutPoint[i] = true;
            }
        }

        System.out.println(Arrays.toString(mutPoint));
String dna1=“ATGT”;
字符串dna2=“GTGA”;
如果(dna1.length()!=dna2.length())返回;
boolean[]mutPoint=新布尔值[dna1.length()];
对于(int i=0;i
它打印:
[true,false,false,true]

注意事项:

  • 循环长度应为dna的长度
  • 您需要检查两个DNA的长度是否相等
  • 您需要比较字符串中字符的相等性

  • 我假设只有当dna序列长度相等时,你才需要比较它们

    public static boolean[] mutationPoints(String dna1, String dna2) {
            if(dna1.length() == dna2.length()){
              boolean [] mutPoint =  new boolean [dna1.length()]; 
              for( int i = 0; i < dna1.length(); i++) {
                  if( dna1.charAt(i)== dna2.charAt(i)) {
                      mutPoint[i] = true; 
                  }
    
                 else  {
                      mutPoint[i] = false; 
                  }
              }
    
                  return mutPoint;  }
    
            else{
                return null;
            }
        }
    
        public static void main(String args[]) {
            boolean abc[]=mutationPoints("AWQA","AQQA");
    
        System.out.println(Arrays.toString(abc));
    
          }
    
    publicstaticboolean[]mutationPoints(字符串dna1、字符串dna2){
    如果(dna1.length()==dna2.length()){
    boolean[]mutPoint=新布尔值[dna1.length()];
    对于(int i=0;i
    输出:


    [true,false,true,true]

    使用小写
    true
    false
    。使用
    for(int i=0;i
    这始终是0小写的
    true
    false
    ,但下一个谜团将是循环条件'imutPoint。length
    中的逻辑有问题条件语句,我不应该使用
    I
    ,因为我试图使dna1等于另一个dna2。