2012-04-03 31 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