int []a=new int [10]; for(int i=0;i<=9;i++) { a[i]=i; System.out.println(a[i]+"="+a[i]); }
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); } }
for(int i=0;i<=9;i++)
{
a[i]=i;
System.out.println(a[i]+"="+a[i]);
}
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);
}
}
他要的不是值 要的是你怎么在循环里声明变量而且
变量的名字要是a0 a1 a2 a3这样递增的
数组可以实现同名不同下标,但是难以实现a1,a2,a3这样的名字,因为这里a后面的数字并不是下标,而是一个字符!
我也曾经试图这样搞过,不过到现在没搞 出来,不知道楼主是不是我这个意思!
这个插件可以满足你的需求: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
interpreter.set("i", i);
多余,去掉~
java处理这样的事情是上确实很笨拙。
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]);
}}
否则就只有借助第三方了。
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{
}
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));
}
数组是干啥用的?数组就是为了满足变量名相同而下标不同的一群变量,也就是楼主的需求
可是楼主和数组貌似有仇,宁死不用数组,不得不说,还是楼主狠啊
你也狠呀
如果是类的成员变量,那么可以用反射实现。可惜反射也属于超语言的特性,在这点上跟宏又没啥区别了。
写一程序
来控制变量使其完成
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);}