java - 增强 for 循环上的 ArrayIndexOutOfBounds

标签 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)));
    }
}

最佳答案

问题出在语句arr[a] ='U';

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

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

关于java - 增强 for 循环上的 ArrayIndexOutOfBounds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473454/

相关文章:

java - 将 Glassfish 3.1 更新到 4.0,应用程序失败并出现 NullpointerException

Java 链表数组

java - Spring Webflow 流式处理

java - 之前使用data.sql导入数据时无法使用save()插入

java - 优化/并发 JAVA : reading CSV file, 解析数据以加倍然后对值进行计算

java - 创建名称为 'countriesDao' 的 bean 时出错 : Injection of autowired dependencies failed;

java - 在不卡住 UI 的情况下获取网页源代码

java - 抑制 javac 警告 "...is internal proprietary API and may be removed in a future release"

java - 如何模拟 spring 上下文文件

java - 无法将项目添加到自定义 JPanel