Java 如何为数组中的对象指定数字?
第10章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
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=这是一个客户号码