Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 增强for循环上的ArrayIndexOutOfBounds_Java - Fatal编程技术网

Java 增强for循环上的ArrayIndexOutOfBounds

Java 增强for循环上的ArrayIndexOutOfBounds,java,Java,我正在努力找出一项任务的一部分,我已经有一段时间了。我想把DNA序列转录成RNA序列。然而,我却得到了一份关于BoundsException的报告。我不熟悉使用增强for循环进行迭代,所以我的错误可能隐藏在那里的某个地方。在满足if语句参数之前,不会发生这种情况 private String dnaToRNA(String input) { StringBuilder b = new StringBuilder(); char[] arr = input.toCharArray

我正在努力找出一项任务的一部分,我已经有一段时间了。我想把DNA序列转录成RNA序列。然而,我却得到了一份关于BoundsException的报告。我不熟悉使用增强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)));
    }
}

您希望1小于大小,因此:
if(pos1>=linkedList.size()){


pos1==linkedList.size()
时,它将超出范围

您希望1小于大小,因此:
如果(pos1>=linkedList.size()){


pos1==linkedList.size()
时,它将超出范围

您希望1小于大小,因此:
如果(pos1>=linkedList.size()){


pos1==linkedList.size()
时,它将超出范围

您希望1小于大小,因此:
如果(pos1>=linkedList.size()){


pos1==linkedList.size()
它将超出范围时

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

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

for (int i = 0; i < arr.length; i++) {
    if (arr[i] == 'T') {
        arr[i] ='U';
    }
}   
for(int i=0;i
问题出在语句中
arr[a]='U';

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

for (int i = 0; i < arr.length; i++) {
    if (arr[i] == 'T') {
        arr[i] ='U';
    }
}   
for(int i=0;i
问题出在语句中
arr[a]='U';

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

for (int i = 0; i < arr.length; i++) {
    if (arr[i] == 'T') {
        arr[i] ='U';
    }
}   
for(int i=0;i
问题出在语句中
arr[a]='U';

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

for (int i = 0; i < arr.length; i++) {
    if (arr[i] == 'T') {
        arr[i] ='U';
    }
}   
for(int i=0;i
替换
if(pos1>linkedList.size())
if(pos1>=linkedList.size())
因为索引在Java中是基于0的,如果我这样做,我会收到相同的错误消息。替换
if(pos1>linkedList.size())
if(pos1>=linkedList.size())
因为索引在Java中是基于0的,如果我真的这样做了,我会得到相同的错误消息。用
if(pos1>linkedList.size())
替换
if(pos1>=linkedList.size())
因为索引在Java中是基于0的,如果我真的这样做了,我会得到相同的错误消息。用
if(pos1>linkedList.size())替换
(pos1>=linkedList.size())
由于索引在Java中是基于0的,如果我真的这样做了,我会收到相同的错误消息。这样做了…非常感谢!我想知道使用该迭代器是否有问题。非常感谢!这样做了…非常感谢!我想知道使用该迭代器是否有问题。非常感谢!这样做了…非常感谢!我想知道是否有问题使用那个迭代器没问题。非常感谢!这样做了…非常感谢!我想知道使用那个迭代器是否没问题。非常感谢!