int a0=0,a1=1,……a9=9;
写一程序
来控制变量使其完成 
ai=i(i=0,1,2……9)
其中两个i均为变量,主要卡在a1是一个变量,现在要用变量i去替换1

解决方案 »

  1.   

    int []a=new int [10];
    for(int i=0;i<=9;i++)
    {
    a[i]=i;
    System.out.println(a[i]+"="+a[i]);
    }
      

  2.   


    public class AI
    {
      int a0,a1,a2,a3,a4,a5,a6,a7,a8,a9;  public static void main(String[] args) throws Exception
      {
        AI a = new AI();
        for(int i=0;i<10;i++)
        {
          a.getClass().getDeclaredField("a"+i).setInt(a,i);
        }
        System.out.println(a.a0);
        System.out.println(a.a1);
        System.out.println(a.a2);
        System.out.println(a.a3);
        System.out.println(a.a4);
        System.out.println(a.a5);
        System.out.println(a.a6);
        System.out.println(a.a7);
        System.out.println(a.a8);
        System.out.println(a.a9);
      }
    }
      

  3.   

    我明白楼主的意思
    他要的不是值  要的是你怎么在循环里声明变量而且
    变量的名字要是a0 a1 a2 a3这样递增的
      

  4.   

    赋值还算可以,声明是真的办不到了,除非生成一个JAVA源文件,然后动态编译
      

  5.   

    我觉得楼主的意思是他想用循环生成变量名a1-a10,
    数组可以实现同名不同下标,但是难以实现a1,a2,a3这样的名字,因为这里a后面的数字并不是下标,而是一个字符!
    我也曾经试图这样搞过,不过到现在没搞 出来,不知道楼主是不是我这个意思!
      

  6.   

    有一个java的插件叫做bsh,你可以在网上下载到bsh-2.0b4.jar版本~
    这个插件可以满足你的需求:package test;import bsh.EvalError;
    import bsh.Interpreter;public class OtherTest {
      public static void main(String[] args) {
      try{
        Interpreter interpreter = new Interpreter();
        for (int i = 0; i< 10; i ++){
          interpreter.set("a" + i, i);
          interpreter.set("i", i);
        }
        String []_val = interpreter.getNameSpace().getVariableNames();
        for (String a : _val){
          if (a.startsWith("a")){
            System.out.println(a + "=" + interpreter.get(a));
          }
        }
      }catch(EvalError ee){
        ee.printStackTrace();
      }
      }
    }输出结果:
    a3=3
    a2=2
    a1=1
    a0=0
    a9=9
    a8=8
    a7=7
    a6=6
    a5=5
    a4=4
      

  7.   

    上面代码中
    interpreter.set("i", i);
    多余,去掉~
      

  8.   

    这要是php,就相当容易了。
    java处理这样的事情是上确实很笨拙。
      

  9.   

    private static void test13(int n) {
    String[] arrayS = new String[n + 1];
    int[] arrayI = new int[n + 1];
    for (int i = 0; i <= n; i++) {
    arrayS[i] = "a" + i;
    arrayI[i] = i;
    System.out.println(arrayS[i] + "=" + arrayI[i]);
    }}
      

  10.   

    如果ai(i=0..9)只是a0..a9的话,那就像david2083() 那样都定义出来,而后用反射。
    否则就只有借助第三方了。
      

  11.   

    package test;import javassist.CannotCompileException;
    import javassist.ClassPool;
    import javassist.CtClass;
    import javassist.CtField;
    public class testmain {    public static void main(String[] args) throws CannotCompileException, InstantiationException, IllegalAccessException, IllegalArgumentException, SecurityException, NoSuchFieldException {
           String  classname="test.AA"; 
            CtClass ctClass=null;
            try{
                ctClass=ClassPool.getDefault().get(classname);
            }catch (Exception e) {
                e.printStackTrace();
        //        ctClass=ClassPool.getDefault().makeClass(classname);
            }
            for(int i=0;i<10;i++){
            ctClass.addField(CtField.make("public  int a"+i+"="+i+";",ctClass));
            }
            Object o=ctClass.toClass().newInstance();
            for(int i=0;i<10;i++){
           System.out.println(o.getClass().getField("a"+i).getInt(o));
            }
        }
    }class AA{
        
    }
      

  12.   

    javassist 可以动态创建属性方法
      

  13.   

    换个思路,使用 Map 来替代。Map<String, Integer> map = new TreeMap<String, Integer>();
    for (int i = 1; i < 10; i++) {
      map.put("a" + i, i);
    }for (int i = 1; i < 10; i++) {
      System.out.printf("a%d = %d%n", i, map.get("a" + i));
    }
      

  14.   

    andycpp(幻瞳) ( ) 信誉:100  2007-8-13 23:03:59  得分: 0  
     
     
       
    数组是干啥用的?数组就是为了满足变量名相同而下标不同的一群变量,也就是楼主的需求
    可是楼主和数组貌似有仇,宁死不用数组,不得不说,还是楼主狠啊  
    你也狠呀
      

  15.   

    这有点像宏的功能,可惜Java不支持宏。
    如果是类的成员变量,那么可以用反射实现。可惜反射也属于超语言的特性,在这点上跟宏又没啥区别了。
      

  16.   

    nt   a0=0,a1=1,……a9=9; 
    写一程序 
    来控制变量使其完成   
    ai=i(i=0,1,2……9) 
    其中两个i均为变量,主要卡在a1是一个变量,现在要用变量i去替换1
    int b[]=new int[10];
    for(int i=0;i<=b.length;i++)
    {System.out.println("a"+b[i]+"="+i);}