2017-01-25 6 views
-1

код Обновлено 1/26Вложенная программа для остановки петли?

Так что я пришел с проблемой для моих студентов, которые казались просто в теории. Немного смущающе, однако, я не могу создать решение . Итак, я провел несколько подробных исследований и исследований, и я думаю, что нашел зависание, но не как обойти его.

Мы используем ProcessingJS. Кажется, что в любой ситуации, когда у меня есть цикл for, проходящий через массив внутри другой для цикла, просматривающий другой массив, моя программа зависает. Это не крушит, это просто ... ничего не делает. Он создает окно, которое ничего не делает.
Задача состоит в том, чтобы создать программу, которая просматривает документы файла и определить количество экземпляров каждой буквы и символа.
В моем коде есть вложенные петли. Первый цикл проходит через содержимое первой строки в моем файле. Второй цикл использует результат первого цикла и просматривает массив, чтобы увидеть, были ли найдены «экземпляры» этого письма. Если он не был найден, он добавляет его. Если экземпляр буквы HAS был найден, то он увеличивает числовое значение, найденное во втором массиве.
Содержимое файла - 4 строки, каждая строка содержит сотни слов, разделенных запятыми.
Вот мой код:

//!!!!!!!!!!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 !!!!!!!!!!!!!!! 

Так вот что я работаю с. Мне интересно, может быть, я пытаюсь сделать что-то вроде проблемы с памятью. Я не уверен, однако, потому что похоже, что это не повлияет на систему, которая сильно, но я откровенно не имею никаких других аргументов.

Один ответ, предоставленный до сих пор, был для другой версии кода. С этим полезными советами, я был в состоянии получить, чтобы работать, но проблема с этим кодом до сих пор остается :(

Может кто-нибудь объяснить, что мой вопрос?

+0

Я пробовал комментировать разные части, поэтому сначала я попытался прокомментировать всю форму для циклов. Это заставило мою программу работать, а затем я начал повторно вводить фрагменты. когда реинтродукция работала нормально. Только после того, как я расколол второй цикл for-loop, все произошло :( Итак, я удивляюсь, что что-то нарушено самим циклом for-loop или просто просматривает массив и использует эти данные для просмотра другого массива слишком много для обработки JS? – rahtas

ответ

3

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

Вы приращение я вместо r в этом цикле

+0

А ... ну .. об этом ... ummm ... Я идиот. Спасибо! :) – rahtas