1

我想在 for 循环中从一个类创建几个对象。但我不知道如何编码。我所写的内容创建了一个新对象,但它覆盖了以前的对象。

package assginment1_version4;

import java.util.*;

public class Client {

public static void main (String[] args) {
    System.out.println ("this is a bill database");
    System.out.println ("add a user?(Y/N)");

    Scanner input = new Scanner(System.in);
    String answer = input.nextLine ();
    ArrayList ary = new ArrayList ();

    for (int i=1 ; i < 100; i++) {
        if (answer.equalsIgnoreCase("y")) {
            Bill bill1 = new Bill();
            System.out.println("user first name:");
            bill1.setFname (input.nextLine());
            System.out.println("user Last name:");
            bill1.setLname (input.nextLine());
            System.out.println ("add a user?(Y/N)");
            answer = input.nextLine ();
        } else if (answer.equalsIgnoreCase ("n")) {
            if (Bill.getBillCounter () == 0) {
                System.out.println ("the Database is empty");
                break;
            } else {
                System.out.println ("Number of Users:  "
                        + Bill.getBillCounter ());
                break;
            }
        } else {
            while (!answer.equalsIgnoreCase ("n")
                    && !answer.equalsIgnoreCase ("y")) {
                System.out.println ("add a user?(Y/N)");
                answer = input.nextLine ();
                }
            }
        }
    }
}

请帮我完成这段代码。

4

3 回答 3

7

您正在覆盖它们,因为您Bill在每个循环上都创建了一个新的并且永远不会将它们保存在任何地方。我相信您想将它们添加到您的ArrayList

首先,您应该向您的ArrayList:

ArrayList<Bill> ary = new ArrayList<Bill>();

然后,在您从用户那里获得关于是否添加新的输入之前Bill,您应该将当前的添加到此列表中:

...
System.out.println("user Last name:");
bill1.setLname(input.nextLine());
ary.add(bill1);
...
于 2012-05-10T22:11:35.047 回答
1

您还没有使用ArrayList,您需要在循环Bill's末尾添加对象。for

ary.add(bill1);

并将类型添加到您的 ArrayList

ArrayList<Bill> ary = new ArrayList<Bill>();
于 2012-05-10T22:11:34.150 回答
0

这是比尔类......

package assginment1_version2;

public class Bill {

/**
 *  Attributes of a bill
 */
private String firstName;
private String lastName;
private int paymentDeadline;
private int paymentCode;
private int billCode;

/**
* Attribute of Bill Class
*/

      private static int BillCounter=0;

/**
 *  Methods of Bill class
 * @return number of users
 */
/*public static int getBillCounter(){
    return BillCounter;
}*/


/**
 * Class Constructor
 * @param Fname is the first name of user
 * @param Lname is the last name of user
 * @param Pdeadline is the deadline of paying the bill
 * @param Pcode introduces the payment uniquely 
 * @param Bcode introduces the bill uniquely
 */
    public Bill (){
        BillCounter++;
    }

/**
 *  FirstName methods 
 *  method to set FirstName
 * @param n is the input of setname method as a user name
 */
public void setFname (String n){
    firstName=n;
}
// method to get FirstName
public String getFname (){
    return firstName;
}


/**
 *  LastName methods
 *  method to set LastName
 */
public void setLname (String m){
    lastName=m;
}
// method to get LastName 
public String getLname(){
    return lastName;
}


/**
 * PaymentDeadline methods
 * method to set PaymentDeadline     
 */
public void setPaymentDeadline(int m){
    paymentDeadline= m;
}
//method to get PaymentDeadline
public int getPaymentDeadline(){
    return paymentDeadline;
}

/*
 * PaymentCode methods
 * Method to set PaymentCode
 */
public void setPaymentCode (int m){
    paymentCode=m;
}
//method to get PaymentCode
public int getPaymentCode(){
    return paymentCode;
}

/*
 * Methods of BillCode
 * method to set BillCode 
 */
public void setBcode(int Bcode){
    billCode=Bcode;
}
//method to get BillCode
public int getBcode(){
    return billCode;
}
}
于 2012-05-11T08:21:06.230 回答