2012-04-03 36 views
0

添加元素阵列我有两个类,一个运行在主方法具有以下for循环:爪哇 - 在1类循环&在另一个

for (int b = startRecipe; b <= endRecipe; b++) 
     { 
      Rec = fileScan.nextLine() + "\n"; 
     } 
     System.out.println(theRecipe.addRecipeStep(Rec)); 

以我其他类中,我有以下循环:

public String[] addRecipeStep(String Rec){ 

     for (int a = 0; a < maxNumOfSteps; a++) 
      recipeSteps[a] = Rec; 

     return recipeSteps; 

    } 

int maxNumOfSteps可以跨越两个班进行访问。我的第一个问题是,我想循环第一个循环,并且对于每个Rec值,我想在第二个循环中将它添加到我的recipeSteps数组中。现在,第二个循环只能增加Rec所需的最后一个值,可以理解(并且数组在所有索引中包含相同的内容)。如果我执行Rec +=并将每个Rec值添加到数组的1个索引(所有内容都显示出来),那么它将违反程序要求。理想情况下,我应该在第二个数组中具有与Rec值一样多的索引。

问题2是,当我从main类调​​用addRecipeStep(param)时,它打印出“垃圾”。我曾尝试使用toString(),但尚未取得成功。所有建议都欢迎。
谢谢!

回答

0

由于addRecpieStep在一个类中,并且您的第一个循环在另一个类中,所以您需要参考包含addRecepieStep的类。然后,每次在rec循环中循环调用该方法。

在addRecpieStep中,您需要更改一下。之前您用rec的值覆盖了所有元素,但您只是想将其添加到列表的末尾。所以addRecpieStep要循环,直到找到一个空值,和元素添加到该位置:

for (int b = startRecipe; b <= endRecipe; b++) 
    { 
     rec = fileScan.nextLine() + "\n"; 
     refrenceToYourClassContainingAddRecipeStep.addRecipeStep(rec); //add this line 
    } 


public String[] addRecipeStep(String rec){ 

      for (int a = 0; a < maxNumOfSteps; a++){ 
       if(receipeStep[a]==null // loop until you reached a empty spot in your string arrray 
       recipeSteps[a] = rec; // add rec to your empty spot 
       break;    
      } 

     return recipeSteps; 

    } 

要解释,当你这样做(因为你在你的例子一样):

public String[] addRecipeStep(String Rec){ 

     for (int a = 0; a < maxNumOfSteps; a++) 
      recipeSteps[a] = Rec; 

     return recipeSteps; 
    } 

您覆盖与REC的价值在整个阵列,因为它会循环数组通,并添加到每个位置REC这是不是你想要

至于列的打印,我会离开你呢什么完成。但是,您需要循环访问数组,并在每个元素上调用println。因此,编写一个将数组作为参数的方法,循环访问数组并在每个循环中调用println。祝你好运

+0

嗨吉姆,我创建了一个包含addRecipeSteps的类的对象,那么object.addRecipeSteps(Rec)就足够了吗?我添加了'while',但是我得到了'null'。请指教。 – 2012-04-03 07:37:45

+0

如果该对象的引用被命名为object,则object.addRecipeSteps(rec)将起作用。至于你的空值,我编辑我的帖子了一下。试一试变化 – 2012-04-03 07:47:28

+0

是的,看到了。但现在,它只打印出第一个“Rec”值。 – 2012-04-03 07:48:40