hskay
2016-12-21 07:05
采纳率: 100%
浏览 2.6k
已采纳

java 提取变量名中的数字 比如说变量a1,a2,a3 我如何用一个int来接收1,2,3

变量名a1,a2,a3...是递增的图片说明
比如说上面这张图 假设这个变量名有50个 我需要对每个变量名判断太麻烦了
可能我脑子短路 目前就想获取变量名的数字
或者有什么好的思路 求大大指点

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • takeoffZTF 2016-12-21 08:04
    已采纳

    import java.lang.reflect.Method;

    public class Test1 {
    public static void main(String[] args) throws Exception, SecurityException {
    Ea ea = new Ea();

        // 通过对象得到字节码
        Class clazz = ea.getClass();
    
        // 循环反射
        for(int i=1;i<4;i++){
            Method m = clazz.getMethod("getState"+i);
            System.out.println(m.invoke(ea));   // 执行方法
        }
    }
    

    }
    class Ea {
    public String getState1(){
    return "1";
    }
    public String getState2(){
    return "2";
    }
    public String getState3(){
    return "3";
    }
    }

    打赏 评论
  • kun_hello 2016-12-21 07:25

    java中局部变量的名称是获取不到的吧 而成员变量可以用反射的方式获取 也不可取 你还是想想其他的方法

    打赏 评论
  • chenl_ 2016-12-21 07:28

    建议 参考一下反射

    打赏 评论
  • 进击的巨喵 2016-12-21 07:48

    利用java反射遍历变量名来取值

     public static void main(String[] args) {
            EaTest ea = new EaTest();
            ea.setState1("1");
            ea.setState2("2");
            ea.setState3("3");
            ea.setState4("4");
            ea.setState5("5");
            Method[] methods = ea.getClass().getDeclaredMethods();
            try {
                for (int i = 1;i<=5;i++){
                    String fieldName = "state" + i;
                    String getMethodName = "get" + fieldName.substring(0,1).toUpperCase() + fieldName.substring(1); 
                    for (Method method : methods) {
                        if (method.getName().equals(getMethodName)) {
                            if (method.invoke(ea, new Object[]{}) != null 
                                    && method.invoke(ea, new Object[]{}).toString().length() != 0) {
                                System.out.println(method.invoke(ea, new Object[] {}).toString());
                            } else {
    
                            }
                        }
                    }
                }
            } catch (Exception e) {
    
            }
        }
    
    打赏 评论

相关推荐 更多相似问题