Java 如何为数组中的对象指定数字?

Java 如何为数组中的对象指定数字?,java,Java,第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 getN

第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());
        }
    }
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共类客户{
私有字符串名称;
私有字符串streetAddress;
私有字符串电话号码;
私人整数合计;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}      
公共字符串getStreetAddress(){
返回街道地址;
}
public void setStreetAddress(字符串streetAddress){
this.streetAddress=streetAddress;
}
公共字符串getPhoneNumber(){
返回电话号码;
}
public void setPhoneNumber(字符串phoneNumber){
this.phoneNumber=电话号码;
}
public int getTotal(){
返回总数;
}
公共无效集合总计(整数总计){
这个.总计=总计;
}
公共静态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”);
}
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(系统输入);
ArrayList customerList=新的ArrayList();
查尔安斯;
做
{
客户=新客户();
系统输出打印(“客户名称”);
customer.setName(in.next());
int i=0;
++一,;
系统输出打印(“街道地址”);
customer.setStreetAddress(in.next());
系统输出打印(“电话号码”);
customer.setPhoneNumber(in.next());
customerList.add(客户);
System.out.println(“输入总销售额”);
customer.setTotal(in.nextInt());
System.out.println(“是否要输入新客户(y/n)”;
字符串answer=in.next();
ans=答案。字符(0);
((字符串)customerList.concat(“”)
}而(ans='y');
for(客户c:客户列表){
System.out.print(c.getName()+“\n”+”电话号码是“+c.getPhoneNumber()+”\n“+”总销售额是“+c.getTotal()+”\n“+”地址是“+c.getStreetAddress());
}

对于(inti=0;i,代码中有以下行:

((String) customerList).concat("")
试图将列表转换成字符串是注定要失败的——我不知道你为什么认为它应该有效

如果需要列表的字符串表示,则应在类
Customer
中实现一个方法,然后可以执行以下操作:

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

您可以使用Map.来代替ArrayList,在Map.中,您可以将数字作为键,将值作为客户

包含使用映射的示例


中的答案包含有关如何在HashMap中将对象用作值的信息

如果我从评论中收集的信息是正确的,那么我相信这就是您想要的:

当前的assign()不正确如果希望随机值为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());
    }
分配数字应该如下所示:

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。

Hiiii

据我所知,您正在尝试将数字添加到arrayList的每个值中,同时创建customer对象的arrayList,因此首先了解对象的arrayList

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

al.add(c1);
al.add(c2);
Customer c1=新客户();
客户c2=新客户();
ArrayList al=新的ArrayList();
加入(c1);
新增(c2);
这里这个ArrayList对象只保存客户对象的地址,那么如何更改客户对象的地址;不能在客户类型ArrayList对象中添加数字, 还有另一种方法可以将ArrayList类型转换为对象类型,然后无需再次进行类型转换,您可以在ArrayList中添加任何类型的对象 像这样,

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

    al.add(c1);
    al.add(c2);
Customer c1=新客户();
客户c2=新客户();
ArrayList al=新的ArrayList();
加入(c1);
新增(c2);

阅读以下内容:不要将您的全部代码转储到此处,希望我们能为您找到错误。您之所以向我发送此消息,是因为您正在寻找人们将其整个项目扔到此处的一般主题。这是不同的,因为我知道我的代码中有哪些是正确的,哪些是错误的,我知道我添加了一个功能导致了问题。我的问题需要完整的代码,因为它提供了背景信息,说明了为什么我需要避免简单地将arraytype切换为String来解决我的问题。如果您能提供一个正确方向的提示,而不是给出与其他人相同的固定答案,我将不胜感激。您所说的“分配一个数字”是什么意思?您已经在主方法中分配了一个电话号码和总数。您当前表格中的问题太模糊,无法回答…添加3个随机数字,一个到10,三个XXX的678xxx=这是一个客户号码