我的课程有6个课程,所以我将尝试发布与我所遇到的问题相关的方法。我正在尝试添加捐赠对象,这些对象通过从文件中读取信息来获取其属性。我的程序没有打印出任何与donationList相关的信息,所以我做了一个System.out.println(donationList.size());它告诉我列表中有0个对象。我已经看了一段时间,无法弄清楚捐赠对象在哪里无法正确创建或正确添加到arraylist。
这是我调用启动过程的方法。
public static void main(String[] args) {
readAndProcess();
这是启动流程的方法。
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
}
}
}
}
这是在readAndProcess方法之后发生的addDonation方法。
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());
}
}
这是设置捐赠对象属性的方法。
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;
}
这是检查donationID的唯一ID的方法。
public boolean isIDUnique(int donationID) {
int index;
for (index = 0; index < donationList.size(); ++index) {
if (donationID == donationList.get(index).getDonationID() ) {
return false;
}
}
return true;
}
这是检查唯一的捐赠ID的方法。
public boolean isIDUnique(int donorID) {
int index;
for (index = 0; index < donorList.size(); ++index) {
if (donorID == donorList.get(index).getDonorID() ) {
return false;
}
}
return true;
}
这是DonationImpl类中将对象添加到arraylist的方法。这种方法的说明告诉我出于某种原因将其设置为布尔值,我不确定为什么。
public boolean add (Donation donation) {
if (donationList.add(donation)) {
return true;
}
return false;
}
donationImpl类,用于显示arrayList创建的外观。
public class DonationImpl {
// Data Field
private ArrayList<Donation> donationList = new ArrayList<Donation>();
//Getter
public ArrayList<Donation> getDonationList() {return donationList;}
以下实施例中的1和3指的是供体ID。我的donorID方法和创建都正常工作。
示例行文字:
捐赠,增加,101,1,工资扣除,22.22,07 / 04/1776,Y,1001 捐赠,添加,303,3,周年纪念捐款,111.00,07 / 04/1777,N,2244
答案 0 :(得分:1)
你有一个错字
[https://jsfiddle.net/boxxevolution/wb64oL66/2/][1]
应该是
else if ( lineValues[0].equals("Donation")) {