【问题标题】:Returning Wrong Indexes of Array返回数组的错误索引
【发布时间】:2017-11-22 04:25:24
【问题描述】:

我正在尝试使用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));

谢谢!

编辑:这似乎甚至是我的项目中的数组也应该完整打印的问题。我应该发布更多代码吗?

【问题讨论】:

    标签: java arrays string printstream


    【解决方案1】:

    您似乎错误地调整了计数器。对于“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));
    

    【讨论】:

    • 哦,是的,我刚刚省略了 counter[]++ 的“A”部分。感谢您指出这一点!
    • @incapacitated:我认为您还需要将 Arrays.copyOfRange(counter, 0, 4) 更改为 Arrays.copyOfRange(counter, 0, 5)
    【解决方案2】:

    您错过了 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]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-29
      • 2011-03-08
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多