2012-04-03 7 views
0

Ich habe zwei Klassen, eine der Haupt Verfahren läuft, hat die folgende for Schleife:Java - Looping in Klasse 1 & Hinzufügen Element Array in einem anderen

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

In meiner anderen Klasse, ich habe die folgende Schleife:

public String[] addRecipeStep(String Rec){ 

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

     return recipeSteps; 

    } 

int maxNumOfSteps kann über die beiden Klassen zugegriffen werden. Meine erste Frage ist, ich möchte Schleife über die erste Schleife, und für jede Rec Wert möchte ich es zu meinem recipeSteps Array in der zweiten Schleife hinzufügen. Für den Moment fügt die zweite Schleife nur den letzten Wert hinzu, den Rec verständlicherweise benötigt (und das Array enthält dasselbe in allen Indizes). Wenn ich Rec += mache und alle Rec Werte zu 1 Index des Arrays hinzufüge (alles wird angezeigt), dann ist es gegen die Programmanforderungen. Idealerweise sollte ich im zweiten Array so viele Indizes haben, wie es Werte von Rec gibt.

Problem # 2 ist, wenn ich die addRecipeStep(param) aus der main Klasse anrufen, druckt es "Müll" aus. Ich habe versucht, toString() zu verwenden, aber es gab noch keine Erfolge. Alle Ratschläge sind willkommen.
Danke!

Antwort

0

Da addRecpieStep in einer Klasse ist und Ihre erste Schleife in einer anderen, benötigen Sie einen Verweis auf die Klasse, die addRecepieStep enthält. Dann rufen Sie diese Methode jedes Mal in Ihrer Schleife mit dem Wert von rec auf.

In addRecpieStep müssen Sie ein bisschen ändern. Früher haben Sie alle Elemente mit dem Wert von rec überschrieben, aber Sie möchten es einfach am Ende der Liste hinzufügen. So addRecpieStep Sie eine Schleife, bis Sie einen Nullwert finden, und fügen Sie das Element an dieser Position:

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; 

    } 

Um zu erklären, wenn Sie dies tun (wie Sie in Ihrem Beispiel tat):

public String[] addRecipeStep(String Rec){ 

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

     return recipeSteps; 
    } 

überschreiben Sie das ganze Array mit dem Wert von rec, da es durch das Array loopt, und fügen Sie rec zu jeder Position, die nicht das ist was Sie wollen

Wie für das Drucken des Arrays werde ich es Ihnen überlassen Komplett. Sie müssen jedoch durch das Array laufen und println für jedes Element aufrufen. Schreiben Sie also eine Methode, die ein Array als Parameter akzeptiert, durch das Array führt und in jeder Schleife println aufruft. Viel Glück

+0

Hallo Jim, ich habe ein Objekt für die Klasse erstellt, die addRecipeSteps enthält, also wäre object.addRecipeSteps (Rec) ausreichend? Ich habe das 'while' hinzugefügt, aber ich bekomme' null's. Bitte beraten. –

+0

Wenn der Verweis auf dieses Objekt Objekt genannt wird, dann würde object.addRecipeSteps (rec) funktionieren. Was Ihren Nullwert betrifft, habe ich meinen Beitrag ein wenig bearbeitet. Versuchen Sie es mit der Änderung –

+0

Ja, sah es. Aber jetzt druckt es nur den ersten "Rec" -Wert aus. –

Verwandte Themen