Partage
  • Partager sur Facebook
  • Partager sur Twitter

Boucle while infinie

    11 juin 2017 à 5:36:54

    Bonjour

    J'ai un probléme avec mon code, en fait je travaille sur une appli android et dés que je compile mon code ca me met app not responding. Je suis sur que ca provient de la boucle while car deja avant elle fonctionnait et en plus si je change la condition elle marche. Voici mon code

         String [][] calculs = new String [e.getCount()+1][2+(e.getCount())];
                        e.moveToFirst();
    
    while(verif(calculs, e.getCount())!=0){
                        Float max = Float.valueOf(0);
                        Float ValMax = Float.valueOf(0);
                        String NomMax=null;
                        for(int u=1;u<e.getCount()+1;u++){
                            if(Float.valueOf(calculs[u][1])>max){
                                NomMax = calculs[u][0];
                                ValMax = Float.valueOf(calculs[u][1]);
                            }
                        }
                        Float min = Float.valueOf(999);
                        Float ValMin = Float.valueOf(0);
                        Float donne = Float.valueOf(0);
                        String NomMin=null;
                        for(int u=1;u<e.getCount()+1;u++){
                            if(Float.valueOf(calculs[u][1])<min){
                                NomMin = calculs[u][0];
                                ValMin = Float.valueOf(calculs[u][1]);
                            }
                        }
                        if(ValMax-abs(ValMin)>=0){
                            for(int u=1;u<e.getCount()+1;u++){
                                if(calculs[u][0].equals(NomMin)){
                                    calculs[u][1]=String.valueOf(0);;
                                    donne = abs(ValMin);
                                }
                            }
                            for(int u=1;u<e.getCount()+1;u++){
                                if(calculs[u][0].equals(NomMax)){
                                    calculs[u][1]=String.valueOf(ValMax-abs(ValMin));
                                }
                            }
    
                        }
                        else {
                            for(int u=1;u<e.getCount()+1;u++){
                                if(calculs[u][0].equals(NomMin)){
                                    calculs[u][1]=String.valueOf(ValMax-abs(ValMin));
                                    donne = abs(ValMax);
                                }
                            }
                            for(int u=1;u<e.getCount()+1;u++){
                                if(calculs[u][0]==NomMax){
                                    calculs[u][1]=String.valueOf(0);
                                }
                            }
                        }
                        result.append(NomMax + " donne à " + NomMin + donne +"\n");
    
    
                    }

    et ceci est la fonction verif

    public Integer verif(String[][] a, int t) {
            Integer res = 0;
            for (int u = 1; u < t + 1; u++) {
                if (Float.valueOf(a[u][1]) != 0.0) {
                    res++;
                }
    
            }
            return res;
        }

    Merci de votre aide


    • Partager sur Facebook
    • Partager sur Twitter
    ------------------------------------------------------ MRABET Abderrahmen Institut Galilée-Université Paris 13 ------------------------------------------------------
      21 juin 2017 à 16:44:22

      tu n'as pas d'erreurs quand tu fais: 

      Float.valueOf(a[u][1])

      car ta matrice de Strings n'est jamais initialisée tu dois donc avoir des "null" dans chaque case de celle-ci. 

      Et pourquoi créer une matrice de String si c'est pour les passer en Float après ? 

      • Partager sur Facebook
      • Partager sur Twitter

      Boucle while infinie

      × 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