java编程 - 动态变量名

时间:2011-10-16 22:50:28

标签: java

我对我试图编写的这个程序有疑问。

fin = new FileInputStream (args[0]);
            BufferedReader d = new BufferedReader(new InputStreamReader(fin));
            String str;

            while ((str = d.readLine()) != null) {
                String [] string = str.split(" ");
                System.out.println(string[0]);
                int i=0;
                if(!(string[0].compareTo("INPUT")==0) ||  (string[0].compareTo("OUTPUT")==0))
                {
                    // solution goes here

                }
            }

            fin.close();        

所以我的问题是我正在尝试创建一个类的对象a1,a2,a3等(比如说A),然后将它们作为顶点添加到图形中。有没有办法动态定义它们?这会有用吗?

A [] a;
while(condition is true)
{
 a[i].setParameters() // dont worry about this
 graph.addVertex(a[i])
 i++;
}

如果没有,你能告诉我一个更好的方法吗?当我尝试这个我得到局部变量没有初始化错误。我可能会遗漏一些微不足道的事情

注意: 该项目是设计逻辑电路模拟器,我正在尝试实现图形样式的数据结构,其中节点描绘门,互连将是边(我有两个类称为门和互连)

3 个答案:

答案 0 :(得分:2)

很难判断这是否解决了所有问题,因为您没有提供准确的错误消息。至少它解决了一个问题。您从未在数组中创建对象。 你必须知道这样做的好处,或者你可以像这样实现所希望的行为:

while(condition is true)
{
 A a = new A();
 a.setParameters(); // dont worry about this
 graph.addVertex(a);
 // If you also need it in some kind of array, add it to the array, too.
 // Might be nice to use Vector<A> or List<A> aList = new ArrayList<A>() 
 // since those two can outmaticcaly grow while inserting at the back.
 // Create those outside of the loop if you need them at all.
 i++;
}

答案 1 :(得分:1)

问题#1:

A [] a;

这只声明a。您仍然需要使用以下命令创建数组:

a = new A[5]; // Or at the same time with: A[] a = new A[5];
例如,

获取一个可容纳5个A个对象的数组。 然后需要创建每个元素:

a[0] = new A();
...

问题#2:正如您所看到的,数组不是动态的,如果您不知道它们需要提前多大,则会出现问题。您需要查看可能使用的集合,例如ArrayList

答案 2 :(得分:1)

看起来您需要初始化数组a。而不是

A [] a;

你需要

A[] a = new A[100];//whatever size you need.

如果您不知道要创建多少A个,那么像List这样的动态扩展结构可能更合适。

List<A> listOfA = new ArrayList<A>();
while(condition is true)
{
  A a = createASomehow();
  a.setParameters();
  listOfA.add(a);
  graph.addVertex(a)
}

虽然真的,但我不确定为什么你需要保留A s的集合,图表是否有一些返回其顶点列表的方法?