小编典典

ArrayIndexOutOfBounds增强了for循环

java

我正在尝试找出部分任务,而现在我已经将头撞墙了。我正在尝试将DNA序列转录为RNA序列。但是,我正在获取ArrayOutOfBoundsException。我是使用增强的for循环进行迭代的新手,所以我的错误可能隐藏在某个地方。在满足if语句参数之前,它不会发生。

private String dnaToRNA(String input) {

    StringBuilder b = new StringBuilder();
    char[] arr = input.toCharArray();
    for (char a : arr) {
        if (a == 'T') {
            arr[a] ='U';

        }
    }   
     for (char a : arr) {
        if (a == 'A'){
            b.append ('U');
        }

        else if (a == 'U') {
            b.append('A');
        }

        else if (a == 'C') {
            b.append('G');
        }

        else if (a == 'G') {
            b.append('C');
        }

    }


    return b.reverse().toString();
}

}

   public void transcribe(int pos1) {

    if (pos1 > linkedList.size()) {
        System.out.println("Position selected out of range");
        return;
    }
    if (linkedList.get(pos1) != null && isValidDNA(linkedList.get(pos1))) {
        linkedList.set(pos1, dnaToRNA(linkedList.get(pos1)));
    }
}

阅读 172

收藏
2020-11-30

共1个答案

小编典典

问题出在声明中 arr[a] ='U';

问题是内部char表示为等于84,因此您得到一个。您需要使用传统计数器对其进行迭代:int``'T'``ArrayIndexOutOfBoundsException

for (int i = 0; i < arr.length; i++) {
    if (arr[i] == 'T') {
        arr[i] ='U';
    }
}
2020-11-30