2016-03-23 18 views
0

Nesneleri bir dizide depolamaya ve daha sonra yazdırmaya çalışın. Gerçek konumu yerine bellekte tutmaya devam edin. İçeriğin nasıl kaydedileceğini ve yerlerin nasıl kaydedileceğini hatırlayamıyorum. Dizideki tek nesne nesnesini yazdırma. Java

case VIEW_RECIPE: 
      System.out.println("Please enter the recipe ID:"); 
      searchIndex = input.nextInt(); 
      System.out.println(recipeArray[searchIndex-1]); 
      break; 
case CREATE_RECIPE: 
      Recipe recipe = new Recipe(); 
      recipeArray[recipe.getRecipeId() -1] = recipe; //-1 to store in element 0; 
      break; 

yüzden yazdırmak nasıl recipeArray [] endeksi 0, bir tarifi vardır varsayarak. Bu kod sadece hafıza yerini verir ve döngüsel olarak kullanmak pratik değildir.

kodu
System.out.println(Arrays.toString(recipeArray[searchIndex-1])); 

denedik ama toString deepToString gerektiğini veya dizi uzun olacağını söylüyor.

DÜZENLEME: Burada tarifi sınıf için isteniyor sonra başka

package potluck; 
import java.util.*; 


public class Recipe { 

private int recipeId = 0; 
private Scanner input = new Scanner(System.in); 
private String attribution; 
private String dateAdded; 
private String category; 
private String listOfIngredients; 
private String tags; 
private String steps; 
private String comments; 


public Recipe(){ //constructor 
    recipeId += 1; 
    setAttribution(); 
    setDateAdded(); 
    setCategory(); 
    setListOfIngredients(); 
    setTags(); 
    setSteps(); 
    System.out.println("Thank you for the recipe, it's Id is "+recipeId); 
    System.out.println("Use this to find it later."); 
    System.out.println(); 
} 

herşey Sen Reçete sınıfında toString() methond geçersiz kılar Alıcılar ve ayarlayıcılar

+1

Tarif sınıfını paylaşabilir misiniz? Ne tür bir veri kullandığınızı görmek isterim. –

+2

'Recipe' toString() 'yi geçersiz kılar mı? – Mureinik

+0

İçeriği zaten yazdırıyorsunuz. Sadece varsayılan 'toString()' yöntemi (java.lang.Object' den miras alınan) bellek konumunu yazdırır. –

cevap

4

olmasıdır. Örneğin,

class Recipe { 
    private int id; 
    private String name; 

    public String toString() { 
     return "Recipe#" + id + ": " + name; 
    } 
} 
+0

tamam, toString'i geçersiz kıldım, sonra nasıl kullanırım? Tarifdeki her şeyi yazdırmaya çalıştığım gibi, İsim, Tarih eklendi, kullanıcı girilen bir grup alan var. –

+0

Bu, toString() uygulamasında hangi bilgileri açığa çıkarmak istediğinize karar vermeniz içindir. Tüm sınıf alanlarınızı veya bazılarını ya da hiçbirini kullanamazsınız (daha sonra garip olanlara rağmen). –

+0

@SamMurdock Normal yöntem, elde etmek istediğiniz her değişken için alıcılar oluşturmaktır, aksi halde hepsini tek bir uzun dönüş bildirimi ile geri gönderebilirsiniz. –

3

Tarifler için bir sınıf yazdığınızı varsayalım. Eğer öyleyse, toString() yöntemini geçersiz kılın ve istediğiniz şeyi geri getirin. Bu, System.out.println()'u kullandığınızda yazdırılacaktır. println(Object o) yöntemi, verilen nesnenin toString() yöntemini çağırır ve döndürülen String'u konsola yazar.

İlgili konular