-3

ArrayListを理解するのに問題があります。Customer、Video、Invoiceの3つのクラスを使用してプログラムを作成しています。以下のコードでは、ArrayListを設定するために追加する新しい顧客を作成していますが、それを配列であるかのように処理しようとしているように感じます。ユーザーが別の顧客オブジェクトを追加し、カウンター「i」を使用して一連の質問を実行し、その顧客オブジェクトに追加できるようにしたいと思います。私はこれのいくつかがかなり混乱していることに気づきます。

import java.util.Scanner;
import java.util.ArrayList;

public class Prog4 {


    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        ArrayList <Customer> customer = new ArrayList <Customer>();
        int i = 0;
        char ans;

        do
        {

            System.out.print("Customer name: ");
            String name = in.next();
            customer.add(i,).setName(name);

            System.out.print("Street Address: ");
            String streetAddress = in.next();
            d1.setStreetAddress(streetAddress);

            System.out.print("City: ");
            String city = in.next();
            d1.setCity(city);

            System.out.print("State: ");
            String state  = in.next();
            d1.setState(state);

            System.out.print("Zipcode: ");
            String zipcode = in.next();
            d1.setZipcode(zipcode);

            System.out.print("Phone Number: ");
            String phoneNumber = in.next();
            d1.setPhoneNumber(phoneNumber);

            customer[i] = new Customer(name, streetAddress, city, state, zipcode, phoneNumber);

            System.out.print("Would you like to enter in a new customer (y/n)? ");
            String answer = in.next();
            ans = answer.charAt(0);
        }while(ans == 'y');


    }

}
4

4 に答える 4

0

Javaは演算子のオーバーロードをサポートしておらず、Java標準ライブラリのクラスは単なる通常のクラスです。

これは、[]を使用するのが理にかなっているのは、配列を使用する場合のみであることを意味します(Collections FrameworkのクラスであるArrayListではありません)。ArrayListで使用できるメソッドを知る必要がある場合は、http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.htmlを参照してください(具体的には、 add()メソッド)

于 2013-03-26T23:04:03.343 に答える
0

まず、Customerオブジェクトに値を設定してから、customer.add(Customer object)を実行することをお勧めします。

何かのようなもの :

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


public class Customer {
    private String name;
    private  String streetAddress;
    private  String city;
    private  String state;
    private  String zipcode;
    private  String phoneNumber;



    public String getName() {
        return name;
    }



    public void setName(String name) {
        this.name = name;
    }



    public String getStreetAddress() {
        return streetAddress;
    }



    public void setStreetAddress(String streetAddress) {
        this.streetAddress = streetAddress;
    }



    public String getCity() {
        return city;
    }



    public void setCity(String city) {
        this.city = city;
    }



    public String getState() {
        return state;
    }



    public void setState(String state) {
        this.state = state;
    }



    public String getZipcode() {
        return zipcode;
    }



    public void setZipcode(String zipcode) {
        this.zipcode = zipcode;
    }



    public String getPhoneNumber() {
        return phoneNumber;
    }



    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }



    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        List <Customer> customerList = new ArrayList <Customer>();
        char ans;

        do
        {
            Customer customer = new Customer(); 
            System.out.print("Customer name: ");
            customer.setName(in.next());

            System.out.print("Street Address: ");
            customer.setStreetAddress(in.next());

            System.out.print("City: ");
            customer.setCity(in.next());

            System.out.print("State: ");
            customer.setState(in.next());

            System.out.print("Zipcode: ");
            customer.setZipcode(in.next());

            System.out.print("Phone Number: ");
            customer.setPhoneNumber(in.next());

            customerList.add(customer);

            System.out.print("Would you like to enter in a new customer (y/n)? ");
            String answer = in.next();
            ans = answer.charAt(0);
        }while(ans == 'y');

        for(Customer c: customerList){
            System.out.print(c.getName());

        }

        for(int i=0; i<customerList.size(); i++){
            System.out.print(customerList.get(i).getName());

        }


    }

}
于 2013-03-26T23:17:45.283 に答える
0

まず、名前を変更する必要があります

ArrayList <Customer> customer = new ArrayList <Customer>();

ArrayList <Customer> customers = new ArrayList <Customer>();

ですから、誰もが(作者を含めて)それが顧客のいるコンテナであることを知っています。

次に、これは構文エラーです。

customer.add(i,).setName(name);

カンマは、max(2、4、5)のように引数を区切るために使用されます。番号を追加していますが、このコンテナには顧客のみを含めることができます。また、arraylistは追加時にインデックスを自動的にインクリメントするため、一部のiについて心配する必要はありません。したがって、ArrayListの顧客に顧客を追加する場合は、最初に顧客を作成する必要があります。うまくいくかもしれない何か...

public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    ArrayList <Customer> customers = new ArrayList <Customer>();
    char ans;

    do
    {

        System.out.print("Customer name: ");
        String name = in.next();
        //customer.add(i,).setName(name); you dont need this

        System.out.print("Street Address: ");
        String streetAddress = in.next();
        //d1.setStreetAddress(streetAddress);
        //these parameters are in constructor of class customer

        ...

        System.out.print("Phone Number: ");
        String phoneNumber = in.next();
        //d1.setPhoneNumber(phoneNumber);

        Customer customer = new Customer(name, streetAddress, city, state, zipcode, phoneNumber);
        customers.add(customer); //first create, then add

        System.out.print("Would you like to enter in a new customer (y/n)? ");
        String answer = in.next();
        ans = answer.charAt(0);
    }while(ans == 'y');


}
于 2013-03-26T23:19:48.497 に答える
0

上記の回答に加えて、次のことを試してください。

import java.util.Scanner;
import java.util.ArrayList;

public class Prog4 {

public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    ArrayList <Customer> customers = new ArrayList <Customer>();
    // int i = 0; Why is this needed ?
    char ans;

    do
    {

        System.out.print("Customer name: ");
        String name = in.next();

        System.out.print("Street Address: ");
        String streetAddress = in.next();

        System.out.print("City: ");
        String city = in.next();

        System.out.print("State: ");
        String state  = in.next();

        System.out.print("Zipcode: ");
        String zipcode = in.next();

        System.out.print("Phone Number: ");
        String phoneNumber = in.next();

        Customer tempCustomer = new Customer(name, streetAddress, city, state, zipcode, phoneNumber);
        customers.add(tempCustomer);

        System.out.print("Would you like to enter in a new customer (y/n)? ");
        String answer = in.next();
        ans = answer.charAt(0);
    }while(ans == 'y');

    in.close();
  }

}

add()メソッドはArrayListの次のインデックスに要素を追加することに注意してください。角かっこ[]でインデックスを指定する必要はありません。

http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html

于 2013-03-26T23:27:24.627 に答える