2017-01-25 3 views
-1

code mis à jour 1/26Programme de blocage de boucles for-loops?

Alors je suis venu avec un problème pour mes élèves qui semblaient simple en théorie. Un peu embarrassant, cependant, je ne peux pas créer une solution fonctionnant pour cela. J'ai donc fait beaucoup de recherche et de dépannage et je pense que j'ai trouvé le raccrochage, mais pas comment le contourner.

Nous utilisons ProcessingJS. Il semble que dans toute situation où j'ai une boucle forçant à travers un tableau à l'intérieur une autre recherche de boucle pour un tableau différent, mon programme raccroche. Ça ne plante pas, ça ... ne fait rien. Cela crée une fenêtre qui ne fait rien.
La tâche consiste à créer un programme qui examine les documents d'un fichier et d'identifier le nombre d'occurrences de chaque lettre et caractère.
Mon code contient des boucles for-imbriquées. La première boucle passe par le contenu de la première ligne de mon fichier. La deuxième boucle utilise le résultat de la première boucle et regarde à travers un tableau pour voir si des 'instances' de cette lettre ont déjà été trouvées. S'il n'a pas été trouvé, il l'ajoute. Si une instance de la lettre a été trouvée, alors elle augmente la valeur numérique trouvée dans un second tableau.
Le contenu du fichier comporte 4 lignes, chaque ligne contenant des centaines de mots séparés par des virgules.
Voici mon code:

//!!!!!!!!!!Declare Variables!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

String exampleTXT[] = loadStrings("sounds.txt"); 

//String [][] results = {{"null", "null"}}; 

String [] resultsAlpha = {"null"}; 
int[] resultsNumber = {0}; 

boolean analyze = true; 


// 
//!!!!!!!!!!!Void Setup!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
// 
void setup() { 
    println("hey 1");  
    size(800, 800); 
    println("hey 2"); 
} 
//!!!!!!!!!!!End of Void Setup!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
// 


// 
//!!!!!!!!!!!Void Draw!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
// 
// 
// 
void draw() { 
    println("hey 3"); 
    background(0); 
    println("hey 4"); 
    fill(0, 255, 0); 
    println("hey 5"); 
    textAlign(LEFT, TOP); 
    println("hey 6"); 

    //nothing to see on this line 

    println("hey 7"); 
    if (analyze == true) { 
    println("hey 8"); 
    for (int i = 0; i < exampleTXT[0].length(); i++) { 
     println("hey 9");   
     for (int r = 0; r < resultsAlpha.length(); r++) { 
     println("hey 10");   
     if (exampleTXT[0][i] != resultsAlpha[r]) { 
      println("hey 11");   
      resultsAlpha = append(resultsAlpha, exampleTXT[0][i]); 
      println("hey 12");   
      resultsNumber = append(resultsNumber, 0); 
      println("hey 13"); 
     } 
     println("hey 14");  
     if (exampleTXT[0][i] == resultsAlpha[r]) { 
      println("hey 15");  
      resultsNumber[r]++; 
      println("hey 16"); 
     } 
     println("hey 17"); 
     } 
     println("hey 18"); 
    } 
    println("hey 19");  
    analyze = false; 
    println("hey 20"); 
    } 
    println("hey 21");  


    for (int i = 0; i<resultsAlpha.length(); i++) { 
    println("hey 22"); 
    text(resultsAlpha[i] + " " + resultsNumber[i], 0, 10*i); 
    println("hey 23"); 
    } 
    println("hey 24"); 
    if (frameCount%60==0) { 
    println("hey 25"); 
    println(frameCount/60); 
    println("hey 26"); 
    } 
    println("hey 27"); 
} 
//!!!!!!!!!!!End of Void Draw!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
// 


// 
//!!!!!!!!!!!Void KeyPressed!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
// 
// 
// 
void keyPressed() { 

    if (key == DELETE) { 
    println(exampleTXT[0]); 
    } 
    if (keyCode == UP) { 
    println(resultsNumber); 
    } 

    // 
    // Break your code up into logical sections with comments! 
    // 
} 

//!!!!!!!! End of Void keyPressed !!!!!!!!!!!!!!! 

est donc ce que je travaille avec. Je me demande si je me heurte à une sorte de problème de mémoire lorsque j'essaie de le faire. Je ne suis pas sûr, cependant, parce que cela semble ne pas avoir d'impact sur le système, mais je n'ai franchement aucun autre raisonnement.

La seule réponse fournie jusqu'ici était pour une autre version du code. Avec ces conseils utiles, j'ai pu obtenir que pour travailler, mais le problème avec ce code reste encore :(

Quelqu'un peut-il expliquer ce que ma question est?

+0

J'ai essayé de commenter différentes parties, donc j'ai d'abord essayé de commenter l'ensemble des boucles, ce qui a fait fonctionner mon programme, puis j'ai commencé à réintroduire des pièces. boucle quand réintroduite a bien fonctionné.Il n'a pas été jusqu'à ce que je décommentais la deuxième boucle for-ce que les choses se sont cassées :( Donc, je me demande si quelque chose est cassé avec la boucle for elle-même, ou si regarder simplement dans un tableau et utiliser ces données pour regarder à travers un autre tableau est trop pour le traitement de JS? – rahtas

Répondre

3

for (int r = 0; r < numbers.length; i++){

Vous incrémentez i au lieu de

+0

Ah ... eh bien ... à ce sujet ... ummm ... Je suis un idiot. Je vous remercie! :) – rahtas