我对我试图编写的这个程序有疑问。
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++;
}
如果没有,你能告诉我一个更好的方法吗?当我尝试这个我得到局部变量没有初始化错误。我可能会遗漏一些微不足道的事情
注意: 该项目是设计逻辑电路模拟器,我正在尝试实现图形样式的数据结构,其中节点描绘门,互连将是边(我有两个类称为门和互连)
答案 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的集合,图表是否有一些返回其顶点列表的方法?