因此,我正在创建一个程序,从两个不同的文件读取客户详细信息和订单详细信息。我创建了读取文件的方法,将数据存储在客户的对象中,然后将客户的对象添加到链接列表中。现在,当我尝试对订单文件执行相同的操作时,我得到了错误的输出。因此,在下面显示的代码中,我试图检查按顺序输入的客户名称是否与存储在customer链接列表中的名称相匹配。所以假设我在order.txt文件中有两行:
Ord101 true James
Ord102 false Jim通过我所做的工作,我得到了以下输出:
Ord102 false Jim
Ord102 false Jim而不是得到正确的输出,即:
Ord101 true James
Ord102 false Jim因为James和Jim都是客户文件和链接列表中的名字。下面是我读取订单文件的代码:
public void readFileOrder() {
Scanner y;
String b,c,d;
LinkedList<Customers> list=new LinkedList<Customers>(); //another method was already created to add data inside list and its working so list contains data
LinkedList<order> list1=new LinkedList<order>();
Boolean isOpen;
order Order1=new order();
while(y.hasNext())
{
b=y.next();
isOpen=y.nextBoolean();
d=y.next();
System.out.println(list);
Customers customers1=new Customers();
for(int i=0;i<list.size();i++) //this is where i'm checking if the customer name in the order file matches the value in list
{
if(list.get(i).getName().equals(d))
{
customers1=list.get(i);
Order1.setCustomer(customers1);
Order1.setName(b);
Order1.setIsOpen(isOpen);
list1.add(Order1);
}
}
}
for(int j=0;j<list1.size();j++)
{
System.out.println(list1.get(j).getCustomer()+" and "+list1.get(j).getName()+" and "+list1.get(j).getIsOpen());
}
}以防万一,下面提供的是客户和订单类:
import java.util.LinkedList;
public class Customers {
@Override
public String toString() {
return "Customers [Name=" + Name + ", age=" + age + ", email=" + email + ", Address=" + Address + "]";
}
String Name;
int age;
String email;
String Address;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return Address;
}
public void setAddress(String address) {
Address = address;
}
public void removeCustomer(String name2, LinkedList<Customers> list) {
for(int k=0;k<list.size();k++)
{
if(list.get(k).getName().equals(name2))
{
list.remove(list.get(k));
}
}
}
}订单类别:
import java.util.LinkedList;
public class order{
String name;
Boolean isOpen;
Customers customer;
String cusName;
public order() {
super();
}
public String getName() {
return name;
}
public order(Customers customer) {
super();
this.customer = customer;
}
public void setName(String name) {
this.name = name;
}
public Boolean getIsOpen() {
return isOpen;
}
public void setIsOpen(Boolean isOpen) {
this.isOpen = isOpen;
}
public String getCustomer() {
return customer.getName();
}
public void setCustomer(Customers customer) {
this.customer=customer;
this.cusName=customer.getName();
}
}发布于 2019-09-04 14:56:51
您要一次又一次地向列表添加对同一个order的引用,每次都覆盖在循环的前一次迭代中设置的属性。相反,在循环中创建一个new order。
换句话说,改变这一点:
order Order1=new order();
while(y.hasNext()) {对此:
while(y.hasNext()) {
order Order1=new order();https://stackoverflow.com/questions/57790882
复制相似问题