코드Nested for-loops stalling program?
1/26 그래서 내가 이론적으로 간단한 듯 학생들에게 문제를 내놓았다 업데이트되었습니다. 그러나 조금 당황 스럽지만 작업을 만들 수는 없습니다. 그래서 몇 가지 광범위한 문제 해결 및 조사를 수행했으며 전화를 찾은 것 같지만 해결 방법은 찾지 못했습니다.
ProcessingJS를 사용하고 있습니다. 어떤 상황에서 for 루프가 안에 있고 다른 배열을 통해 또 다른 for-loop 검색을하고있는 것 같습니다. 내 프로그램이 끊깁니다. 그것은 충돌하지 않으며 단지 ... 아무것도하지 않습니다. 그것은 아무것도하지 않는 창을 만듭니다.
파일의 문서를보고 각 문자와 문자의 인스턴스 수를 식별하는 프로그램을 만드는 작업입니다.
내 코드에 for-loops가 중첩되어 있습니다. 첫 번째 루프는 내 파일의 첫 번째 줄 내용을 통과합니다. 두 번째 루프는 첫 번째 루프의 결과를 사용하고 배열을 통해 해당 문자의 '인스턴스'가 이미 발견되었는지 확인합니다. 찾지 못하면 추가합니다. 문자의 인스턴스가 발견되면 두 번째 배열에있는 숫자 값이 증가합니다.
파일의 내용은 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 !!!!!!!!!!!!!!!
:
다음은 내 코드입니다. 이렇게하려고 할 때 어떤 종류의 메모리 문제가 생기고 있는지 궁금합니다. 그게 그렇게 힘든 시스템에 영향을 미치지 않을 것 같기 때문에 나는 확실하지 않지만, 솔직히 다른 추론을 가지고 있지 않습니다.
지금까지 제공된 다른 대답은 다른 버전의 코드입니다. 그 도움이되는 조언을 나는 그 일을 얻을 수 있었다, 그러나이 코드의 문제는 여전히 남아있다 :(
는사람은 내 문제는 당신이 대신 난을 증가거야?
다른 부분을 주석 처리하려고 했으므로 먼저 for 루프 전체를 주석 처리하려고 시도하여 프로그램이 작동하지 않게 한 다음 조각을 다시 도입하기 시작했습니다. 루프를 다시 도입했을 때 루프가 잘 돌아갔습니다. 두 번째 for 루프에서 주석을 제거 할 때까지는 문제가 발생하지 않았습니다. ( 그래서 for-loop 자체로 무언가가 깨지거나 배열을보고 다른 배열을 조사하기 위해 해당 데이터를 사용하는 것이 처리를 위해 너무 많은지 궁금합니다. – rahtas