当前位置: 首页 > 知识库问答 >
问题:

代码正在抛出IndexOutOfBoundsExc的?[重复]

夔高寒
2023-03-14

有人能告诉我为什么这个代码不起作用吗?它抛出IndexOutOfBoundsException

package blok6afvink6;

/**
 * 
 */

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Scanner;

public class Blok6afvink6 {

    public static void main(String[] args) throws FileNotFoundException {

        //1st, use Scanner to readin all sequence names and sequences;
        //create two arrayList to store sequence names and sequences;
        ArrayList<String> name = new ArrayList<String>();
        ArrayList<String> sequence = new ArrayList<String>();

        Scanner ScanLine = new Scanner(new FileReader("OverlapGraph.txt"));
        String seq = "";
        while (ScanLine.hasNextLine()) {
            String temp = ScanLine.nextLine();
            if (temp.charAt(0) == '>') {
                sequence.add(seq);
                name.add(temp.substring(1));
                seq = "";
            } else {
                seq += temp;
            }
        }

        ScanLine.close();
        sequence.remove(0);
        sequence.add(seq);

        //naam en seq printen
        int Len = name.size();
        for (int i = 0; i < Len; i++) {
            System.out.println(name.get(i) + ": " + sequence.get(i));
        }
        //3rd, connect all sequences with O3 overlap, put the linked-names into a new string ArrayList
        ArrayList<String> overLaps = linkOverlaps(name, sequence);

        System.out.println("\nPrintout results:");
        for (int i = 0; i < overLaps.size(); i++) {
            System.out.println(overLaps.get(i));
        }
    }

    private static ArrayList<String> linkOverlaps(ArrayList<String> name, ArrayList<String> sequence) {
        ArrayList<String> overLap = new ArrayList<String>();
        //int size = name.size();
        for (int i = 0; i < name.size(); i++) {
            int Len1 = sequence.get(i).length();

            for (int j = 0; j < name.size(); j++) {
                if (i != j && sequence.get(i).substring(Len1 - 3).equals(sequence.get(j).substring(0, 3))) {
                    String linked = name.get(i) + " " + name.get(j);
                    overLap.add(linked);
                }
            }
        }
        return overLap;
    }

}

错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.rangeCheck(ArrayList.java:653)
    at java.util.ArrayList.remove(ArrayList.java:492)
    at blok6afvink6.Blok6afvink6.main(Blok6afvink6.java:36)

共有3个答案

濮阳靖
2023-03-14

仔细查看错误消息:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

似乎您的某个集合的大小为0。如果是这样,那将导致此异常,因为您在尝试访问集合之前并不总是检查以确保集合确实有任何项目。

特别检查序列

徐昕
2023-03-14

尝试

if(sequence.size() > 0) {
    sequence.remove(0);
}
解宏扬
2023-03-14

异常中引用的第 36 行似乎是:

sequence.remove(0);

只有当列表为空时,此异常才能失败。

所以我们必须假设<code>序列。添加(seq)从未被调用。

如果没有问题,您可以先检查是否为空:

if (!sequence.isEmpty()) {
    sequence.remove(0);
}
 类似资料:
  • 这是我连接HTTP的代码。 这就是android。操作系统。NetworkOnMainThreadException 请帮忙。

  • 我有一个,在中,会抛出 在apphost中: 但是当我调用服务时,http状态码是200,不是401,为什么? HTTP/1.1200OK(为什么不是401?) 缓存控制:专用 内容类型:text/html;字符集=utf-8 服务器:Microsoft IIS/7.5 X-AspNet-Version:4.0。30319 X-Powerd-By: ASP. NET 日期:2014年3月14日星期

  • 我正在尝试测试当试图除以零时,是否会抛出带有定制消息的异常。 方法是这样的: 在搜索了一些解决方案后,我发现这是一种做这件事的方法,但是我的IDE不能识别“expected”... 我只是不知道为什么我的 IDE 无法识别“预期”。不知道这是否与 Junit 版本有关,或者我使用的语法是否存在问题。 在我迄今为止使用的所有其他测试中,我从未在@Test之后添加任何内容。我刚刚在另一个线程中找到了类

  • 我怎样才能解决这个问题? org.springframework.web.client.resourceAccessException:对“https://example.com/api/sessions”的POST请求的I/O错误:服务器返回HTTP响应代码:401(URL:https://example.com/api/sessions);嵌套异常是java.io.ioException:服务

  • 原因:java.lang.ClassNotFoundException:javax.mail.address

  • 我使用的是SpringBoot2.2。2.发布,version 在 超时失败统计(总计=30,活动=1,空闲=29,等待=163) 有29个空闲连接,仍然发生超时故障。