2016-10-02 2 views
1

alors je dois lire une matrice du fichier .txt, qui est du format donné ci-dessous.Comment lire les entiers du fichier .txt qui contient le tableau 2-D, je reçois java.util.InputMismatchException

problemMatrix = [[101, 2, 3, 4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [21, 22, 23, 24, 25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36, 37, 38, 9, 40], [41, 42, 43, 44, 45, 46, 47, 28, 49, 50], [51, 52, 53, 54, 55, 56, 57, 58, 59, 60], [61, 62, 63, 64, 65, 66, 67, 68, 69, 70], [71, 72, 73, 7, 75, 76, 77, 78, 79, 80], [81, 82, 83, 84, 85, 86, 87, 88, 89, 90], [91, 92, 93, 94, 95, 96, 97, 98, 99, 100]] 

i ont un code déjà écrit pour calculer les lignes et les colonnes. J'ai écrit ce code pour obtenir la valeur entière dans [i] [j] index.

int [][] input= new int[rows][cols]; 
    matrix = new Scanner(new File("test.txt")); 
    matrix.useDelimiter("[ ,\r\n\t=]"); 
    try{  
     for(int i=0; i<rows; i++){ 
      for(int j = 0;j<cols;j++){ 
       input[i][j]=matrix.nextInt(); 
       System.out.print(input[i][j] + " "); 
      } 
      System.out.println(); 

      } 
    } 
    catch(InputMismatchException e){ 
     System.out.println(e); 
    } 

mais cela me donne l'exception InputMismatchException. Aucune suggestion. Je ne comprends pas comment changer les délimiteurs pour scanner. Merci.

+0

partager le contenu du texte. txt – SarthAk

+0

Est-ce que "problemMatrix =" existe dans votre fichier txt? es, alors il ne correspond pas à l'expression rationnelle que vous avez fournie, d'où l'exception. Essayez de lire ceci https://docs.oracle.com/javase/7/docs/api/java/util/InputMismatchException.html – Nishit

+0

oui, la matrice que j'ai donnée ci-dessus est tirée du test.txt et contient la matrice de problèmes –

Répondre

0

Je pense que le problème est avec votre regex. Le regex [ ,\r\n\t=] signifie « correspondre à l'un , \r, \n, \t ou =. Notez qu'il ne correspond pas à [ ou ].

Vous devez inclure à la fois [ et ] l'intérieur de vos crochets, et assurez-vous qu'ils » Il se peut que vous ayez un problème avec plusieurs délimiteurs conduisant votre analyseur à essayer d'analyser une chaîne vide, donc vous voudrez que votre regex corresponde à plusieurs de ces caractères ensemble

+0

J'ai utilisé matrix.useDelimiter ("[^ 0-9] +"); après avoir lu plus sur regex. merci pour votre aide joe c. –