2016-04-01 41 views
0

Sınıfım Bütçe (Başlık ve Tarih özelliklerini içerir) ve bu dizi için nesneler içeren bir Array var. Eşleşen bir dize bulmak için her bir nesneyi yinelemek istiyorum. Her çalıştırdığımda, yazdırma bulunamadı. Teşekkürler. Öncedenjava içinde ArrayList içinde Nesnede Döngü

ArrayList<Budget> myArrayList = new ArrayList<Budget>(); 
public void removeBudget() 
{ 
    String title; 
    int indexNumber; 
    System.out.println("Enter the Title to be removed"); 
    title = scanner.next(); 
    indexNumber = findId(title); 
    if(indexNumber != 0) 
    { 
     myArrayList.remove(indexNumber); 
    } 
    else 
    { 
     System.out.println("Not found"); 
    } 
} 
private int findId(String findTitle) 
{ 
    for(int i=0; i<myArrayList.size();i++) 
    { 
     if(myArrayList.get(i).getTitle().contains(findTitle)) 
     { 
      return i; 
     } 
    } 
    return 0; 
} 
+4

hiçbir eşleşme olduğunu olasılığını göz önüne aldık sabit iklimlendirme döngüsünü değiştirme? ya da 0 dizininde mi? – Stultuske

+0

Bu, başlığın sadece bulunamadığını gösteriyor - bu veriler ne durumda? Bulmaya çalıştığınız başlığın * ne * olduğundan eminsiniz? Kodda hata ayıkladınız mı? Bir [mcve] üretebilecekseniz, yardım etmek daha kolay olurdu. –

+0

Stultuske'nin endeksi 0 ile ilgili noktası önemli bir tanesidir - -1 değeri yerine -1 değerini döndürmeyi düşünün, 0 yerine –

cevap

0

konu

if(indexNumber >= 0) 
    { 
     myArrayList.remove(indexNumber); 
    } 
0

@Stultuske, "Hiçbir eşleşme olmadığını düşündünüz mü?" ve

Kaynak kod

import java.util.ArrayList; 
import java.util.List; 

public class SO36350049 { 
    private class Budget { 
     private String title; 

     public String getTitle() { 
      return title; 
     } 

     public void setTitle(String title) { 
      this.title = title; 
     } 
    } 

    public static void main(String[] args) { 
     SO36350049 so36350049 = new SO36350049(); 

     Budget budget1 = so36350049.new Budget(); 
     budget1.setTitle("Budget 1"); 

     Budget budget2 = so36350049.new Budget(); 
     budget2.setTitle("Budget 2"); 

     List<Budget> budgetList = new ArrayList<Budget>(); 
     budgetList.add(budget1); 
     budgetList.add(budget2); 

     int index = findId(budgetList, "Budget 1"); 
     if(index != -1){ 
      budgetList.remove(index); 
     } 
     System.out.println(budgetList.size()); 
    } 

    private static int findId(List<Budget> budgetList, String findTitle) { 
     for (int i = 0; i < budgetList.size(); i++) { 
      if (budgetList.get(i).getTitle().contains(findTitle)) { 
       return i; 
      } 
     } 
     // If you return `0` it'll remove the element at 0th position 
     return -1; 
    } 
} 
+0

geçtiğim dize ile eşleşmiyorsa diğer o açık olanı kaçırdınız: "0 bulunamadı" için 0 dönme, çünkü öğe 0 dizininde bulunursa, ... her iki yöntemde "bulunamayan" değeri ve daha sonra da negatif bir değere bakın. – Stultuske

+0

Bu cevap yanlış. Eğer koşulu 'i Alderath

+0

@Alderath True Ben sanırım -1 olmamalı çünkü ArrayIndexOutofBoundsException alıyorum artık – adarshjaya12

İlgili konular