2014-03-12 38 views
-1
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]++; 
        } 
       } 
      } 
     } 
    } 

} 

這是我爲大學所做的一個項目。其目的是分析兩個日期和不同抽籤之間的樂透信息。它給這個錯誤:我在一個java項目中得到了一個StringOutOfBoundsException

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1

它發生在兩個日期從命令line.It從文件中讀取一行,並把它變成一個數組所謂的氣溫。該程序的其餘部分工作正常,但如果它進入這部分崩潰,並給出了這個錯誤。任何人都可以發現導致錯誤的原因。我也知道我可以寫得更好,但是我希望它在我專注於編寫好代碼之前先工作。

編輯:bonusnumbers和jackpotnumbers都是45長的int數組。long.temp是一個字符串數組,其中temp [0]是日期,如10/07/1994.jackpot是一個長度爲45的int數組。 if(weekday == day || day == 0);這是爲了檢查從文件中讀取的日期是否是由用戶提供的特定日期。 我不知道你的堆棧跟蹤的意思,或使用debugger.I是新的編程

編輯2:我知道錯誤是在這一部分,因爲它只有當我運行此section.I可以運行死機沒有它的代碼crashing.After此錯誤的其他部分,它只是說,每個方法

+4

那麼哪一行拋出異常?代碼示例要簡短一些但完整的程序*只是*表明問題。如果你可以格式化你的代碼,它也會*真的*幫助 - 如果沒有正確的縮進就很難閱讀。 –

+0

你可以粘貼堆棧跟蹤的前10行嗎? –

+0

嘗試將其縮小到更具體的代碼行。你向我們展示的代碼中有許多變量沒有在代碼的那部分中定義/分配(它們可能在之前,但我們不知道這一點)。使用你的調試器,在哪裏發生異常? –

回答

0

的你提到你「新的節目」的名字所以你不「知道什麼[意]通過堆棧跟蹤或使用調試器「。那你怎麼知道知道這是導致問題的這段代碼?你一定在IDE的控制檯中看到了一些東西(假設你使用的是IDE,或者你是從命令行運行它的),無論哪種情況,都應該有很多行文字一個你貼說這樣的話「是java ......」。無論如何,如果存在,那麼這就是你的堆棧跟蹤(基本上,你的程序的執行,導致到您的StringIndexOutOfBoundsException線)。

無論如何,因爲它拋出了一個StringIndexOutOfBoundsException,我會說你的contentEquals(...)方法調用是非常可疑的。但是,正如其他人所說,沒有更多的信息是不可能的。

相關問題