Partage
  • Partager sur Facebook
  • Partager sur Twitter

conversion String int

au secours!!!

Sujet résolu
    4 mai 2010 à 16:25:29

    bonjour tous le monde; j'ai fait un programme qui lie un fichier
    contenant une matrice ,et je veut traduire cette matrice en listarray
    (les indices de la matrice sont les coordonnées des capteur),bref voila le code
    source et la matrice.
    //Package à importer afin d'utiliser l'objet File
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    
    public class lecture_mat {
    
    	public static void main(String[] args){
    			int in;
    			
    		// collection d'objets
    
    		ArrayList<String> al = new ArrayList<String>();
    		// creation de fichier
    		File file = new File("mat.txt");
    		// lecteur
    		FileReader fr = null;String str="";int i = 0;
    
    			// création de l'objet de lecture
    			try {
    				fr = new FileReader(file);
    			} catch (FileNotFoundException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    
    			
    			
    
    			// l pour ligne et c pour colonne
    			int l = 0;
    			int c = 0;
    
    			// Lecture des données
    
    			// tq on a pas atteint la fin du fichier
    
    			try {
    				while ((i = fr.read()) != -1) {
    
    					char ch = (char) i;
    
    					// nouvelle ligne
    					if (ch == '\r') {
    						l++;
    						c = 0;
    					}
    					// System.out.println((char)i+"---->"+l+"---->"+c);
    
    					if (ch == ' ') {
    						c++;
    					}
    
    					if (ch == 'C') {
    						str = "";
    						while (ch != ' ') {
    							i = fr.read();
    							ch = (char) i;
    						     if(ch!=' ')
                                                            str += ch;
    						}
    						 
    					}
    					
    					in = Integer.parseInt(str);
    					al.add(in,"(" + l + "," + c + ")");
    				}
    			} catch (NumberFormatException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    
    			// affichage
    			for (int j = 0; j < al.size(); j++)
    				System.out.println(j+1+ "--->" + al.get(j));
    
    			
    
    		
    
    	}
    }
    


    et voila la matrice:

    0 1 2 3 4 5 6 7 8 9 10
    1 C1 0 C2 0 C8 0 C13 0 0 0
    2 C3 0 0 C5 0 C11 0 0 0 0
    3 0 C4 C6 0 C9 0 C14 0 0 0
    4 0 0 C7 0 0 C10 0 0 0 0
    5 0 C15 0 0 C12 0 C16 0 0 0
    6 0 0 C17 0 C18 0 0 C20 0 0
    8 0 0 0 0 0 0 0 0 0 0
    9 0 0 0 0 0 0 0 0 0 0
    10 0 0 0 0 0 0 0 0 0 0

    au fait l'erreur est lors de l'execution(la ligne ou il y a parse int).
    au revoir :)








    • Partager sur Facebook
    • Partager sur Twitter
      4 mai 2010 à 16:27:28

      Comme tu as pas mis l'erreur (Exception) que tu rencontres, on va essayer de deviner >_< .
      Y'a fort à parier que quand Integer.parseInt() tombe sur le caractère 'C' il renvoie un NumberFormatException.


      J'ai bon ?
      • Partager sur Facebook
      • Partager sur Twitter
        4 mai 2010 à 16:44:47

        Je suis d'accord avec Javier : l'exception aurait été appréciable
        et d'accord aussi pour le NumberFormatExcetption mais pas à cause du C à cause d'une String vide :

        T'a première valeur lue n'est pas 'C' donc on ne met rien dans str et ça plante



        Pour t'aider regarde (si t'as un niveau correct ou assez de temps):
        - readLine de BufferedReader
        - Split de String (découpe une chaine)

        Avec ça tu peux découper chaque ligne en sous-chaînes (en suivant les espaces) et ensuite mettre traiter chaque valeur.
        Comme ça tu sépare lecture et traitement et c'est plus facile de localiser les erreurs


        Edit :
        Après avoir regarder ton code de plus près, j'ai plusieurs remarques :

        - tu vas rencontrer un problème quand tu auras un 'C**' en fin de ligne car tu sautera le '\r'.

        - si tu veux connaitre précisément l'ordre des coordonnées de tes 'C' utilise plutôt un tableau qu'une liste. C'est plus facile pour la lecture et l'écriture en fonction de l'indice. (A la rigueur tu peux passer le tableau en array une fois qu'il est rempli)
        • Partager sur Facebook
        • Partager sur Twitter
          5 mai 2010 à 0:11:03

          vous avez raison pour l'exception;

          bon,je vais essayer d'appliquer ce qut me propose(ferl)

          et si je me plante ,je te fais signe :-°

          et merci beaucoup. :D
          • Partager sur Facebook
          • Partager sur Twitter

          conversion String int

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown