2016-03-19 16 views
0

Programım 6 sınıfa sahiptir, bu yüzden denediğim konuyla ilgili yöntemleri denemek ve göndermek istiyorum. Özniteliklerini bir dosyadan bilgi okumasından alan bağış nesneleri eklemeye çalışıyorum. Programım donationList ile ilgili bilgileri yazdırmak değildi, bu yüzden bir System.out.println (donationList.size()) yaptım; ve bana listede 0 nesne olduğunu söylüyor. Buna bir süredir baktım ve süreçte bağış nesnesinin doğru bir şekilde yaratılmasının başarısız olduğunu veya arrayliste doğru bir şekilde eklendiğini anlayamıyorum.Olası mantık sorunu bir arraylist'e nesne ekleme

İşlemi başlatan yöntemi çağırdığım yer burasıdır.

public static void main(String[] args) { 
     readAndProcess(); 

Bu, işlemi başlatan yöntemdir.

public static void readAndProcess() { 
     final String INPUT_FILENAME = "input/assn2input.txt"; 
     File dataFile = new File(INPUT_FILENAME); 
     Scanner fileScanner = null; 

     try { 
      fileScanner = new Scanner(dataFile); 
      }catch (FileNotFoundException e) { 
      System.out.println("File not found exception for file " + e); 
      System.exit(0); 
      } 

     String oneLine; 
     String [] lineValues; 

     while(fileScanner.hasNextLine()) { 
      oneLine = fileScanner.nextLine(); 
      lineValues = oneLine.split(","); 

      if(lineValues[0].equals("DONOR")) { 
       if (lineValues[1].equals("ADD")) { 

        addDonor(lineValues); 
       } 
       else if (lineValues[1].equals("DEL")) { 

        // call method to delete 
       } 
      } 

      else if (lineValues[0].equals("Donation")) { 
       if (lineValues[1].equals("ADD")) { 

        addDonation(lineValues); 
       } 
       else if (lineValues[1].equals("DEL")) { 

         // call method to delete 
       } 
      } 
     } 
    } 

Bu readAndProcess yönteminden sonra gerçekleşen addDonation yöntemidir.

public static void addDonation(String [] lineValues) { 
    Donation donation = new Donation(); 
    setDonationAttributes(donation, lineValues); 
    if (donorImpl.isIDUnique(donation.getDonorID()) == false && 
     donationImpl.isIDUnique(donation.getDonationID()) == true) { 
     donationImpl.add(donation); 
    } 
    else { 
     System.out.println("ERROR: The Donation either had a non-unique" 
         + " donation ID or a unique Donor ID. Was not " 
         + "added to list." + donation.toString()); 
    } 

} 

Bağış nesnesinin özelliklerini ayarlayan yöntem budur.

public static Donation setDonationAttributes (Donation donation, 
                String [] lineValues) { 
     donation.setDonationID(Integer.parseInt(lineValues[2])); 
     donation.setDonorID(Integer.parseInt(lineValues[3])); 
     donation.setDonationDescription(lineValues[4]); 
     if (donation.checkDescriptionLength() == false) { 
      System.out.println("ERROR: Donation description is longer " 
          + "than 25 characters"); 
     } 
     donation.setDonationAmount(Double.parseDouble(lineValues[5])); 
     donation.setDonationDate(lineValues[6]); 
     if (lineValues[7].equalsIgnoreCase("Y")) { 
      donation.setTaxDeductible(true); 
     } 
     else { 
      donation.setTaxDeductible(false); 
     }   
     donation.setCheckNumber(Integer.parseInt(lineValues[8])); 
     if (donation.checkNumberCheck()== false) { 
      System.out.println("ERROR: Invalid check number is not between 100 " 
           + "and 5000: " + lineValues[8]); 
     } 
     return donation; 
    } 

Bu, donationID için benzersiz kimliği denetleyen yöntemdir.

public boolean isIDUnique(int donationID) { 
     int index; 

     for (index = 0; index < donationList.size(); ++index) { 
      if (donationID == donationList.get(index).getDonationID()) { 
       return false; 
      } 

     } 
     return true; 
    } 

Bu, benzersiz donorID'yi denetleme yöntemidir.

public boolean isIDUnique(int donorID) { 
     int index; 
     for (index = 0; index < donorList.size(); ++index) { 
      if (donorID == donorList.get(index).getDonorID()) { 
       return false; 
      } 
     } 
     return true; 

    } 

Bu

arraylist nesne ekler DonationImpl sınıfında yöntemdir. Bu yönteme ilişkin talimatlar, her ne sebeple olursa olsun bir boole olarak ayarlamamı söyledi, neden tam olarak emin değilim.

public boolean add (Donation donation) { 
     if (donationList.add(donation)) { 
     return true; 
     } 
     return false; 

    } 

arrayList nesnesinin neye benzediğini göstermek için donationImpl sınıfı.

public class DonationImpl { 

    // Data Field 
    private ArrayList<Donation> donationList = new ArrayList<Donation>(); 

    //Getter 
    public ArrayList<Donation> getDonationList() {return donationList;} 

Aşağıdaki örneklerde 1 ve 3, bir donorID ile ilgilidir. DonorID yöntemlerim ve yaratımım doğru şekilde çalışıyor. Metnin

Örnek hatları:

BAĞIŞI, ADD, 101,1, Bordro tümdengelim, 22.22,07// 1776 04, Y, 1001 BAĞIŞI, ADD, 303,3, Yıldönümü katkısı 111.00,07/1777-1704, N, 2244

cevap

1

bir yazım hatası

else if (lineValues[0].equals("Donation")) { 

Eh

else if (lineValues[0].equals("DONATION")) { 
+1

o expla olmalıdır var Neden bu kadar kafam karışmıştı? Onu yakaladığın için teşekkürler, kafamı duvara çarptı. –