Java 增强for循环上的ArrayIndexOutOfBounds
我正在努力找出一项任务的一部分,我已经有一段时间了。我想把DNA序列转录成RNA序列。然而,我却得到了一份关于BoundsException的报告。我不熟悉使用增强for循环进行迭代,所以我的错误可能隐藏在那里的某个地方。在满足if语句参数之前,不会发生这种情况Java 增强for循环上的ArrayIndexOutOfBounds,java,Java,我正在努力找出一项任务的一部分,我已经有一段时间了。我想把DNA序列转录成RNA序列。然而,我却得到了一份关于BoundsException的报告。我不熟悉使用增强for循环进行迭代,所以我的错误可能隐藏在那里的某个地方。在满足if语句参数之前,不会发生这种情况 private String dnaToRNA(String input) { StringBuilder b = new StringBuilder(); char[] arr = input.toCharArray
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的,如果我真的这样做了,我会收到相同的错误消息。这样做了…非常感谢!我想知道使用该迭代器是否有问题。非常感谢!这样做了…非常感谢!我想知道使用该迭代器是否有问题。非常感谢!这样做了…非常感谢!我想知道是否有问题使用那个迭代器没问题。非常感谢!这样做了…非常感谢!我想知道使用那个迭代器是否没问题。非常感谢!