我在java项目的一部分中得到了StringOutOfBoundsException

时间:2014-03-12 15:46:25

标签: java string runtime-error indexoutofboundsexception

else if (args.length == 5)
    {
        String firstyear = args[3];
        String secondyear = args[4];
        String datayear = temp[0];
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        Date first = df.parse(firstyear);
        Date second = df.parse(secondyear);
        Date datas = df.parse(datayear);
        weekday = convertDateToWeekDay(temp);
        if (weekday == day || day == 0);
        {
            if (temp[8].contentEquals(drawtype)
                    || drawtype.contentEquals("A")) {
                if ((datas.equals(first)) || (datas.equals(second))
                        || ((datas.after(first)) && (datas.before(second)))) {
                    if (choice == 1 || choice == 2) {
                        for (int count = 0; count < jackpot.length; count++) {
                            jackpot[count] = Integer
                                    .parseInt(temp[count + 1]);
                            jackpotnumbers[jackpot[count] - 1]++;
                        }
                    }
                    if (choice == 2) {
                        bonus = Integer.parseInt(temp[7]);
                        if (temp[8].contentEquals(drawtype)
                                || drawtype.contentEquals("A"))
                            bonusnumbers[bonus - 1]++;
                    }
                }
            }
        }
    }

}

这是我要为大学做的一个项目。其目的是分析两个日期之间的乐透信息以及不同的抽奖。它给出了这个错误:

  

线程中的异常&#34; main&#34; java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1

它从命令行获取两个日期。它从文件中读取一行并将其放入一个名为temp的数组中。该程序的其余部分工作正常但如果进入此部分它崩溃并给出该错误。任何人都可以发现造成错误的原因。我也知道我可以写得更好,但我希望它能先工作,然后再专注于制作好的代码。

编辑:bonusnumbers和jackpotnumbers都是45长的int数组.temp是一个字符串数组,其中temp [0]是一个日期,例如10/07 / 1994.jackpot是一个45长的int数组。 if(weekday == day || day == 0);这是为了检查从文件中读取的日期是否是用户提供的某一天。 我不知道堆栈跟踪的含义或使用调试器。我是编程新手

编辑2:我知道错误在本节中,因为它只在我运行此部分时崩溃。我可以运行代码的其他部分而不会崩溃。在此错误之后它只是说出每个方法的名称< / p>

1 个答案:

答案 0 :(得分:0)

你提到你已经&#34;对编程感兴趣&#34; 所以你不会&#34;知道堆栈是什么意思跟踪或使用调试器&#34; 。那么,你如何知道这是导致问题的代码块?您必须在IDE的控制台中看到某些内容(假设您正在使用IDE或者您是否正在从命令行运行此操作?在任何一种情况下,应该已经过了在你发布的文字后面写了很多文字,例如&#34;在java ...&#34; 。无论如何,如果存在,那就是你的堆栈跟踪(基本上,你的程序的执行线,直到你的StringIndexOutOfBoundsException)。

无论如何,因为它正在抛出StringIndexOutOfBoundsException,我会说你的contentEquals(...)方法调用非常可疑。但是,正如其他人所说,如果没有更多的信息,就不可能说出来。