2015-01-12 6 views
2

사용자로부터 문자열 배열을 가져 와서 정렬 한 다음 정렬 된 배열을 사용자에게 표시하기 위해 다음 프로그램을 작성했습니다.Sort는 프로그램을 죽입니다. MATLAB

그러나 sort 함수는 프로그램을 완전히 종료시키는 것으로 보입니다. 그 이유는 두 번째 msgbox이 나타나지 않기 때문입니다.

처음으로 inputdlg을 취소하면 두 메시지 상자가 나타납니다.

strings = {}; 
count = 1; 
while(1) 
    prompt = {strcat('Enter the ', num2str(count), '# String')}; 
    temp = inputdlg(prompt,'Input String',1,{'String'}); 
    if isempty(temp) 
     break 
    end 
    strings{count} = temp; 
    count = count + 1; 
end 
msgbox('Processing....'); 
sorted = sort(strings); % The program stops executing on this point 
msgbox('Operation Completed'); 

그렇다면 프로그램이 마지막 줄을 실행하지 않는 이유는 무엇입니까? 감사합니다.

+0

무엇이 질문입니까? 또한 완전한 실행 가능한 예 (예 : [mcve] (0120))를 제출해야합니다. – kkuilla

+0

"정렬"기능으로 프로그램이 종료되지만 생각을 계속합니다. 즉, "두 번째 메시지 상자가 표시되지 않는 이유는 무엇입니까?" 편집 : 이것은 실행 가능한 예제이며 편집기에서 실행할 때 잘 작동합니다 (언급 한 문제 제외) – AliLotfi

+0

해당 문으로 질문을 업데이트하십시오. – kkuilla

답변

4

변수 temp은 입력 된 문자열을 포함하는 1x1 셀입니다. strings{count} = temp을 할당하면 strings의 각 항목은 1x1 셀입니다. 작업 공간에서 변수를 보면 그 변수를 확인할 수 있습니다. 당신은 strings 셀은 문자열이 아닌 세포를 포함 만이 수정으로

strings{count} = temp{1}; 

를 호출하여 입력 문자열에 액세스 할 수 있습니다. 이제 sort 함수를 사용하여 셀을 정렬 할 수있게되고 코드가 예상대로 작동합니다.

+2

나를 때려 눕힌다. 단지 문자열을 셀 ('strings = {};')로 초기화 한 다음'string (count) = temp; '를 사용하여 비슷한 대답을 입력했다. – RTL

관련 문제