2016-03-01 77 views
1
try { 

     BufferedReader rd = new BufferedReader(new FileReader("tommy.txt")); 
     String text; 
     while ((text = rd.readLine()) != null) { 
      println(text); 
      int i = Integer.parseInt(text); 
      GRect block = new GRect(i, i, i, i); 
      add(block); 

     } 
    } catch (IOException e) { 

     e.printStackTrace(); 
    } 

因此,我有一個.txt文件,我使用字符串「SIZE/10」導入,SIZE是代碼中定義的常量。我知道我可以如何計算整數(所以10),但我不知道如何「轉換」變量名稱。如何在數學方程中使用字符串變量名?

感謝您的幫助。

+1

這將是非常艱難的;你需要編寫自己的解釋器,或者你可以用JavaScript引擎來解釋它。 –

+0

我會使用類似DTO的東西,你有'字段'和'對象值'。在這種情況下'value'是'10','field'將在這種情況下是''SIZE「'。而DTO當然會有一個吸氣和二傳手。 –

回答

0

類似於https://stackoverflow.com/users/1682559/kevin-cruijssen評論 - 如果這些確實是你寫的常量,並且你知道在編寫代碼時它們會是什麼,這並不是一個難題。我建議使用一個枚舉,像這樣:

public enum ConstantsEnum{ 

    SIZE(20)/*...*/; 


    private int value; 

    ConstantsEnum(int value){ 
     this.value = value; 
    } 

    public int getByName(String name){ 
     return ConstantsEnum.valueOf(name).getValue(); 
    } 

    public int getValue(){ 
     return value; 
    } 
} 

與,只要你讀一個字符串常量呼叫ConstantsEnum.getByName(name),瞧,你有你的價值。您可以放棄枚舉想法並創建一個簡單的Map<String,Integer>(或<String,Whatever_your_values_will_be>)來存儲和獲取動態名稱的值。

困難的部分可能是讀取文件以正確獲取並將每個名稱轉換爲它的值 - 但這取決於您沒有提及的文件結構和變量名稱。文件內容上的一系列簡單的replaceAlls可能將所有變量名稱轉換爲值就足夠了。