2012-02-23 55 views
-4

我想要在給定的Java程序中可視化變量的範圍。我怎樣才能在「{」「}」之間命名每個範圍?即我想通過查看程序員將容易知道變量或對象的範圍來在樹結構中顯示變量或對象。 我寫了一個程序來計算「{」「}」以及條件語句或循環語句是否出現在一行中,沒有任何「{」「}」。 我的問題是!有沒有其他工具或概念可以做同樣的事情,或者我們自己寫過。對不起,我不知道如何更清楚地說明。如何在Java程序中可視化變量的範圍

+0

不知道你的問題是什麼。爲什麼範圍需要名稱? – DNA 2012-02-23 09:15:38

回答

1

您可以根據需要命名示波器。如果你想在代碼中做到這一點,你可以添加標籤。

OUTER: { 
    // code 
    INNER: { 
     if(flag) 
      break OUTER; 
    } 
    // code 
} 

你不能聲明在獨立聲明的變量(沒有{})唯一的例外如果/換每個聲明變量循環。

2

我怎麼能說出的每個範圍「{」「}」

爲什麼你需要命名塊目前尚不清楚。大多數IDE不會這樣做:它們可能會使用突出顯示來顯示哪些開啓和關閉大括號匹配。我認爲你的意思是你想確定每個匹配的大括號對,但你實際上並不需要命名它們。

無論採用哪種方式,您都必須解析源代碼才能正確匹配大括號。請注意,它是而不是足以在不解析代碼的情況下對括號進行計數,因爲例如註釋和字符串中的括號不會開始或結束作用域。

如果條件語句或循環語句出現在單行中且沒有「{」「}」,該怎麼辦?

在條件語句(或循環語句的主體)中創建變量(除非該主體是塊(即用大括號包圍))是不合法的。這是因爲Block的定義是:

BlockStatement: 
    LocalVariableDeclarationStatement 
    ClassDeclaration 
    Statement 

IfThenStatement定義爲folows:

IfThenStatement: 
    if (Expression) Statement 

Statement的定義不包括LocalVariableDeclarationStatement(除了一個塊內)。

+0

除了在循環聲明中,例如'for(int i = 0,i <9; i ++)System.out.println(i);' – DNA 2012-02-23 09:19:10