2015-06-03 2 views
1

упаковка глава10;Как присвоить номер объекту в массиве?

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

public class Customer { 
    private String name; 
    private String streetAddress; 
    private String phoneNumber; 
    private int total; 

    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 getPhoneNumber() { 
     return phoneNumber; 
    } 



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

    public int getTotal(){ 
     return total;  
    } 

    public void setTotal(int total){ 
     this.total = total; 
    } 

    public static void assign(){ 
     int a = (int) (Math.random() + 10); 
     int r = (int) (Math.random() + 10); 
     int f = (int) (Math.random() + 10); 
     System.out.println(a + r + f + "x" + "x" + "x"); 
    } 

    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in); 
     ArrayList <Customer > customerList = new ArrayList <Customer>(); 
     char ans; 
     do 
     { 
      Customer customer = new Customer(); 
      System.out.print("Customer name "); 
      customer.setName(in.next()); 
int i = 0; 
++i; 
      System.out.print("Street Address "); 
      customer.setStreetAddress(in.next()); 

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

      customerList.add(customer); 
      System.out.println("Enter total sales "); 
      customer.setTotal(in.nextInt()); 

      System.out.println("Would you like to enter in a new customer  ( y/n)? "); 
      String answer = in.next(); 
      ans = answer.charAt(0); 
      ((String) customerList).concat("") 

     } while(ans == 'y'); 

     for(Customer c: customerList){ 
      System.out.print(c.getName() + "\n" + "Phone number is   "   +c .getPhoneNumber() +"\n" + "Total sales is "+ c.getTotal() + "\n" + "Address  is"+ c.getStreetAddress()); 

     } 

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

мне нужно присвоить номер каждому значению в ArrayList, но я получаю сообщение об ошибке, которое говорит, что я должен преобразовать строку (ArrayList). Как его добавить?

+0

Читать this: http://stackoverflow.com/help/how-to-ask Не просто сбрасывайте весь свой код здесь и ожидайте, что мы найдем для вас ошибку. – Gosu

+2

Вы отправили мне это сообщение, потому что вы ищете обобщенную тему людей, бросающих сюда весь проект. Это другое, потому что я знаю, что правильно и неправильно в моем коде, и я знаю, что добавление функции вызвало проблему. Мой вопрос требует всего кода, потому что он дает справочную информацию о том, почему мне нужно избегать просто переключения массива в String, что бы решить мою проблему. Я был бы признателен, если бы вы могли дать подсказку в правильном направлении, вместо этого предоставив тот же законченный ответ, который вы дадите всем остальным. –

+0

Что значит «назначить номер»? Вы уже назначаете номер телефона и общее количество в основном методе. Ваш вопрос в текущей форме слишком туманный, чтобы ответить ... –

ответ

1

Если я собираю из комментариев правильно, то я считаю, что это то, что вы хотите :

Ваш текущий правопреемник() является неверным, если вы хотите случайных значения 1-10, он должны выглядеть следующим образом, вместо:

public String assign(){ 
    Random rand = new Random(); 
    int a = rand.nextInt(10) + 1; 
    int r = rand.nextInt(10) + 1; 
    int f = rand.nextInt(10) + 1; 
    return a+r+f+"xxx"; 
} 

клиентов будет выглядеть следующим образом:

public class Customer { 
    private String name; 
    private String customerNumber; 
    private String streetAddress; 
    private String phoneNumber; 
    private int total; 
    ... 
    ... 
    ... 
    public String getCustomerNumber() { return this.customerNumber; } 
    public void setCustomerNumber(String cNumber) { this.customerNumber = cNumber; } 

И назначая число должно выглядеть следующим образом:

for(Customer c : customerList) { 
     c.setCustomerNumber(assign()); 
    } 

избежать Также эта строка кода, это очень плохая идея:

((String) customerList).concat("") 

Вероятно, вы должны переименовать customerNumber в customerID.

0

В коде есть следующая строка:

((String) customerList).concat("") 

Попытка бросить список в строку обречен на провал - я не знаю, почему вы думаете, он должен работать.

Если вы хотите строковое представление списка, вы должны реализовать метод toString() в классе Customer, а затем вы можете сделать что-то вроде:

System.out.println(Arrays.toString(customerList.toArray())); 
0

Вместо того, чтобы использовать ArrayList, вы можете использовать карту. У вас может быть номер как ключ и значение как Клиент.

http://examples.javacodegeeks.com/java-basics/java-map-example/ Содержит пример использования карты

Ответ на Storing a new object as the value of a hashmap? содержит информацию о том, как использовать объект в качестве значения в HashMap

1

Hiiii

Как я понимаю, вы пытаетесь добавить номер для каждого значения в ArrayList, И то же самое время вы создаете ArrayList объекта клиента, поэтому сначала понять, о ArrayList объекта,

Customer c1 = new Customer(); 
Customer c2 = new Customer(); 
ArrayList<Customer> al = new ArrayList(); 

al.add(c1); 
al.add(c2); 

Здесь этот объект ArrayList сохраняет только адрес объекта клиента, так как вы можете изменить адрес объекта Customer; Вы не можете добавить номера в типе клиент ArrayList объекта, Там еще один способ типажа вашего ArrayList в типе объекта, а затем нет необходимости снова напечатанного материал, вы можете добавить любой тип объекта в ArrayList как это,

Customer c1 = new Customer(); 
    Customer c2 = new Customer(); 
    ArrayList<Object> al = new ArrayList(); 

    al.add(c1); 
    al.add(c2);