2013-02-15 3 views
-3

Je suis coincé dans ce projet. Est-ce que quelqu'un peut m'aider? Je reçois l'erreur suivante:Pourquoi est-ce que je reçois StringIndexOutOfBoundsException?

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: 
     String index out of range: 2 
    at java.lang.String.substring(Unknown Source) 
    at readFile.read(readFile.java:35) 
    at readFile.main(readFile.java:90) 

Mon code:

import java.io.*; 

import java.util.*; 

//import java.lang.*; 

public class readFile { 

    private Scanner x; 
    public String[][] a; 
    public String temp; 
    public int surahNumber; 

    public void openFile() 
    { 
     try{ 
      x = new Scanner(new File("C:\\en.ahmedali.txt")); 
      a = new String[500][1000]; 
     } 
     catch(Exception e){ 
      System.out.println("File Not Found"); 
     } 

    } 

    public void read() 
    { 

     int i = 1; 
     int j = 1; 
     String xy,tenToninetynie,three_digit,setsurahNumber1,setsurahNumber2,setsurahNumber3; 

     while(x.hasNext()) 
     { 
      a[i][j] = x.nextLine(); 
      temp = a[i][j]; 
      //System.out.println(temp); 
      xy = temp.substring(1, 2); 

      char[] charArray = xy.toCharArray(); 
      //System.out.println(xy); 
      tenToninetynie = temp.substring(2, 3); 
      char[] charArray1 = tenToninetynie.toCharArray(); 

      three_digit = temp.substring(3, 4); 
      char[] charArray2 = three_digit.toCharArray(); 

      setsurahNumber1 = temp.substring(0, 1); 
      setsurahNumber2 = temp.substring(0, 2); 
      setsurahNumber3 = temp.substring(0, 3); 

      if(charArray[0] == '|'){ 
       surahNumber = Integer.parseInt(setsurahNumber1); 
       //System.out.println(surahNumber); 
       if(surahNumber == i+1){ 
        i++; 
        j = 0; 
       }    
      } 
      else if(charArray1[0] == '|'){ 
       surahNumber = Integer.parseInt(setsurahNumber2); 
       //System.out.println(surahNumber); 
       if(surahNumber == i+1){ 
        i++; 
        j = 0; 

       } 
      } 
      else if(charArray2[0] == '|'){ 
       surahNumber = Integer.parseInt(setsurahNumber3); 
       //System.out.println(surahNumber); 
       if(surahNumber == i+1){ 
        //System.out.println("I See"); 
        i++; 
        j = 0;    
       } 
      } 
      j++; 
      //System.out.println(j); 
      //break; 

     } 
    } 
    void write() 
    { 
     System.out.println(a[75][1]); 
    } 

    public static void main(String args[]) 
    { 
     readFile y = new readFile(); 
     y.openFile(); 
     y.read(); 
     y.write(); 
     //System.out.println(y.a[75][1]); 
    } 


} 
+1

Eh bien quelle valeur avez-vous entré? Vraisemblablement un seul caractère, ce qui signifie que la sous-chaîne * échouera lorsque vous demanderez plus que cela ... –

+1

Quelle ligne est la ligne 35? –

+0

xy = temp.substring (1, 2); – coder

Répondre

0

Ce que vous n'en.ahmedali.txt fichier contient, probablement il contient une coupure de ligne et que vous essayez utiliser substring en utilisant l'index, alors qu'il n'en contient aucun, vous devez donc vérifier la longueur de la chaîne avant d'appeler subString.

+0

le fichier contient 1 | 1 | asdaskhdkj 1 | 2 | asdaszxc 1 | 3 | jxocvjxcjv 2 | 1 | jojvkcxvn 2 | 2 | joxzczxcz 3 | 1 | bcxzjicjzkxbckjzxc ces types de lignes ........ – coder

+0

1 | 1 | asdaskhdkj 1 | 2 | asdaszxc 1 | 3 | jxocvjxcjv 2 | 1 | jojvkcxvn 2 | 2 | joxzczxcz 3 | 1 | bcxzjicjzkxbckjzxc ce type de lignes ... – coder

+0

Comme mentionné précédemment, vous devez vérifier l'existence de l'indice de chaîne avant d'utiliser subString sur cela, cela résoudra le problème. – bhupesh

Questions connexes