我有field1 field2 field3等多个String
我现在的程序是在一个FOR循环里面
所以要"field"+i这样子来得到filed1 fied2 field3的值
String field1="hangzhou";
String field2="ningbo";
String field3="jinghua";
for(i=1;i<=vc.size();i++)
{
System.out.println("field"+i);
}
但是输出的结果是field1 field2 field3 要怎么才能得到hangzhou ningbo jinghua呢
请教高手

解决方案 »

  1.   

    不可能,目前版本的 Java 做不到。可以采用数组 String[] field = new String[3];或者换一下思路,采用 MapMap<String, String> map = new TreeMap<String, String>();
    map.put("field1", hangzhou);
    map.put("field2", "ningbo");
    map.put("field3", "jinghua");for(i = 1; i <= map.size(); i++) {
      System.out.println(map.get("field" + i));
    }
      

  2.   

    晕 Java不支持动态执行 当然不行了 不过可以借用JDK1.6引入的script包 借用script的动态执行功能 不过应该没什么意义 我还是比较支持LS的做法 用容器 如果LZ非要用"field"+i的方式可以考虑一下这种方法:ScriptEngineManager manager=new ScriptEngineManager();
    ScriptEngine engine=manager.getEngineByName("JavaScript");
    try{
      engine.eval("var field1='hangzhou'");
      engine.eval("var field2='ningbo'");
      engine.eval("var field3='jinghua'");
      for(i=1;i<=3;i++){
        System.out.println(engine.eval("field"+i));
      }
    } catch (ScriptException e) {
    return;
    }在JDK1.6下正常执行
      

  3.   

    field[1]="hangzhou";
    field[2]="ningbo";
    field[3]="jinghua";
    for(i=1;i<field.length;i++)
    {
    System.out.println(field[i]);
    }
      

  4.   

    当字符串与其他内型的数据用 + 号连接时,其他数据类型将转换成String类型,拼接成一个新的字符串。
    基本数据类型将转换成与其值对应的字符串,类对象则调用其toString()方法,转换成相应字符串。
    因此在lz所举的例子中,“field”+i 最终会生成一个新的字符串对象:“field1”(或2,3)。而System.out.println(String str)方法是将其参数按照字符串输出,而不会将field1当成变量名输出其值。
    LZ想要的方法以上各位已经提供了很好的思路了,个人觉得用数组就不错。:)
      

  5.   

    String field1="hangzhou";
    String field2="ningbo";
    String field3="jinghua";

    public void print() {
    for(int i=1;i<=3;i++){
    try {
    Field field = this.getClass().getDeclaredField("field"+i);
    System.out.println(field.get(this));
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }