2016-03-01 73 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可能将所有变量名称转换为值就足够了。