2017-06-04 134 views
-2

我想知道如何通過使用遞歸從文件中讀取文本(包含Java代碼)來正確縮進問題。原始輸出將沒有任何 選項卡。使用遞歸進行識別

這是我們的目標:enter image description here

這是代碼,但我需要去適應它從一個文本文件閱讀:

void indent(int m, int n) 
{ 
    System.out.println(m); // Forward Printing 

    if (m < n) 
    { 
    indent(m + 1, n); 
    System.out.println(m); // Backward Printing 
    } 
} 
+0

使用'astyle','indent'或'ide'。大多數(全部),其中可以做到這一點。 –

+0

@Elliott必須遞歸 – Mesutluka1019

+0

你試過了什麼(顯示[mcve])?你卡在哪裏,它有什麼問題? –

回答

0

好了,該算法可以像......

function indent(theText, indentCharCount) { 
    for each character of the text... 
     if it is an end-of-line character... 
     concatenate spaces to return string using indentCharCount 
     else if it is a '{' character... 
     scan ahead through characters to find matching '}' character 
     recursively call indent() function passing... 
      characters between { and } for 'theText' param 
      indentCharCount+2 for 'indentCharCount' param 
     concatenate return value of indent() to return string 
     set loop index so that the next character will be the matched '}' 
     else (it's some other character) 
     concatenate character to return string 
    return the concatenated string 
} 

我不想寫出Java中的所有代碼。如果你正在做家庭作業,我寧願你學到一些東西!但是,這是一個基本的遞歸算法,我相信這符合你的問題。

+1

如果'theText'是'Reader'的一個實例,則不需要提前掃描,因爲遞歸調用返回時,Reader將位於右括號之後的字符處。 – SpiderPig

+0

非常有幫助的先生!我會試着去實現它。 – Mesutluka1019