2013-10-22 130 views
0

我想从主方法参数列表中创建一个Boat对象数组,然后将args数组中给定的名称分配给使用.name的船。什么是格式化的正确方法?格式化Java for循环

public static void main(String[] args) { 
    for(int i = 0; i < args.length; i++){ 
     Boat args[i] = new Boat(); 
     args[i].name = args[i]; 
    } 
} 
+0

这是没有意义的。 'args'定义在哪里? 'name'的类型是什么? –

+2

您错误地重复使用了'args'。它是传入'main'的'String'数组;你需要一个单独的'Boat boats [] = new Boat [args.length];'。 – chrylis

回答

3
Boat boat = new Boat(); 
boat.name = args[i]; 
// and then do something with the Boat, I guess... 
2

当你

for(int i=0; i<args.length; i++) { Boat 
    args[i] = new Boat(); 

你正在运行到范围的问题。您需要更改您的Boat数组的名称并在循环外声明它(因此它只创建一次)。

Boat armada[args.length]; 
for(int i = 0; i < args.length; ++i) { 
    armada[i] = new Boat(); 
    armada[i].name = args[i]; 
} 
+0

不正确;你有你的块范围规则里面出来。 – chrylis

+0

而SE仍然不让我改变我的投票。我们走了。 – chrylis

1
public static void main(String[] args) { 
    Boat[] boats = new Boat[args.length]; 
    for (int i=0; i< args.length; i++) { 
    boats[i] = new Boat(); 
    boats[i].name = args[i]; 
    } 
} 

我做了一个假设,即你Boat类有一个public场称为name

0

首先,你需要创建船

Boat[] boats = new Boat[args.length]; 

的阵列。然后,遍历参数传递给获得的名称,每个名称,创建一个新船的名称,并将其保存在一个位置船阵列

for(int i = 0; i < args.length; i++){ 
    Boat boat = new Boat(); //Create new boat 
    boat.name = args[i]; //Give the name to the new boat 
    boats[i] = boat; //And save it into the array 
} 
0

Add a new constructor which accepts name as argument and try the following


     Boat[] boat = new Boat[args.length]; 
      for (int iter = 0; iter < args.length; iter++) { 
       boat[iter] = new Boat(args[iter]); 
     }