返回错误的数组索引
Returning Wrong Indexes of Array
我正在尝试使用 this 仅打印出数组的一部分。我的数组有 5 个元素长 - {6, 4, 2, 6, 2}
- 我只想打印 {6, 4, 2, 6, 2}
。但是使用我当前的代码,它打印出 [4, 2, 6, 2]
- 索引 1 到 4,而不是索引 0 到 3。为什么会发生这种情况?
String nucList = CCATT-AATGATCA-CAGTT
int[] counter = new int[5];
for (int i = 0; i < nucList.length(); i++) {
if (nucList.charAt(i) == 'A') {
} else if (nucList.charAt(i) == 'C') {
counter[0]++;
} else if (nucList.charAt(i) == 'G') {
counter[1]++;
} else if (nucList.charAt(i) == 'T') {
counter[2]++;
} else if (nucList.charAt(i) == '-') {
counter[3]++;
}
int[] counterNucs = Arrays.copyOfRange(counter, 0, 4);
filePrint.println("Nuc. Counts: " + Arrays.toString(counterNucs));
谢谢!
编辑:这似乎甚至是我项目中应该完整打印的数组的问题。我应该 post 更多我的代码吗?
您似乎没有正确调整计数器。对于 'A' 字符,您根本没有调整计数器。在索引 0(第一个数组元素)处,您正在计算 'C' 字符,依此类推,直到仅索引 3(第四个元素)。这使最后一个元素未定义。
我相信您希望您的代码类似于这样:
String nucList = CCATT-AATGATCA-CAGTT
int[] counter = new int[5];
for (int i = 0; i < nucList.length(); i++) {
if (nucList.charAt(i) == 'A') {
counter[0]++;
} else if (nucList.charAt(i) == 'C') {
counter[1]++;
} else if (nucList.charAt(i) == 'G') {
counter[2]++;
} else if (nucList.charAt(i) == 'T') {
counter[3]++;
} else if (nucList.charAt(i) == '-') {
counter[4]++;
}
int[] counterNucs = Arrays.copyOfRange(counter, 0, 4);
filePrint.println("Nuc. Counts: " + Arrays.toString(counterNucs));
您错过了 if 块 中的语句。
您还必须将 Arrays.copyOfRange(counter, 0, 4) 更改为 Arrays.copyOfRange(counter, 0, 5 )
您的代码应如下所示。
String nucList = "CCATT-AATGATCA-CAGTT";
int[] counter = new int[5];
for (int i = 0; i < nucList.length(); i++) {
if (nucList.charAt(i) == 'A') {
counter[0]++;
} else if (nucList.charAt(i) == 'C') {
counter[1]++;
} else if (nucList.charAt(i) == 'G') {
counter[2]++;
} else if (nucList.charAt(i) == 'T') {
counter[3]++;
} else if (nucList.charAt(i) == '-') {
counter[4]++;
}
}
int[] counterNucs = Arrays.copyOfRange(counter, 0, 5);
System.out.println("Nuc. Counts: " + Arrays.toString(counterNucs));
以上代码的结果是Nuc。计数:[6, 4, 2, 6, 2]
我正在尝试使用 this 仅打印出数组的一部分。我的数组有 5 个元素长 - {6, 4, 2, 6, 2}
- 我只想打印 {6, 4, 2, 6, 2}
。但是使用我当前的代码,它打印出 [4, 2, 6, 2]
- 索引 1 到 4,而不是索引 0 到 3。为什么会发生这种情况?
String nucList = CCATT-AATGATCA-CAGTT
int[] counter = new int[5];
for (int i = 0; i < nucList.length(); i++) {
if (nucList.charAt(i) == 'A') {
} else if (nucList.charAt(i) == 'C') {
counter[0]++;
} else if (nucList.charAt(i) == 'G') {
counter[1]++;
} else if (nucList.charAt(i) == 'T') {
counter[2]++;
} else if (nucList.charAt(i) == '-') {
counter[3]++;
}
int[] counterNucs = Arrays.copyOfRange(counter, 0, 4);
filePrint.println("Nuc. Counts: " + Arrays.toString(counterNucs));
谢谢!
编辑:这似乎甚至是我项目中应该完整打印的数组的问题。我应该 post 更多我的代码吗?
您似乎没有正确调整计数器。对于 'A' 字符,您根本没有调整计数器。在索引 0(第一个数组元素)处,您正在计算 'C' 字符,依此类推,直到仅索引 3(第四个元素)。这使最后一个元素未定义。
我相信您希望您的代码类似于这样:
String nucList = CCATT-AATGATCA-CAGTT
int[] counter = new int[5];
for (int i = 0; i < nucList.length(); i++) {
if (nucList.charAt(i) == 'A') {
counter[0]++;
} else if (nucList.charAt(i) == 'C') {
counter[1]++;
} else if (nucList.charAt(i) == 'G') {
counter[2]++;
} else if (nucList.charAt(i) == 'T') {
counter[3]++;
} else if (nucList.charAt(i) == '-') {
counter[4]++;
}
int[] counterNucs = Arrays.copyOfRange(counter, 0, 4);
filePrint.println("Nuc. Counts: " + Arrays.toString(counterNucs));
您错过了 if 块 中的语句。
您还必须将 Arrays.copyOfRange(counter, 0, 4) 更改为 Arrays.copyOfRange(counter, 0, 5 ) 您的代码应如下所示。
String nucList = "CCATT-AATGATCA-CAGTT";
int[] counter = new int[5];
for (int i = 0; i < nucList.length(); i++) {
if (nucList.charAt(i) == 'A') {
counter[0]++;
} else if (nucList.charAt(i) == 'C') {
counter[1]++;
} else if (nucList.charAt(i) == 'G') {
counter[2]++;
} else if (nucList.charAt(i) == 'T') {
counter[3]++;
} else if (nucList.charAt(i) == '-') {
counter[4]++;
}
}
int[] counterNucs = Arrays.copyOfRange(counter, 0, 5);
System.out.println("Nuc. Counts: " + Arrays.toString(counterNucs));
以上代码的结果是Nuc。计数:[6, 4, 2, 6, 2]