Heyho大家!
我的项目有点大,所以我决定将它缩短一点,只显示我目前的问题代码。首先,在控制台上进行im编程。从扫描仪中读取六个字符串,然后将它们保存在一个变量中,我正在进行有效性检查(长度,特殊标志等)。所以我决定用额外的方法check_newCustomer()来做这个。我使用ArrayList作为一个值返回更多。所以现在我需要在main()函数中捕获输入或者在数据库中编写新Customer的任何其他方法。问题是现在我不知道如何在其他方法中引用userID,firstname,secondname ....我只能用索引来引用。但是当我可以使用变量名称来引用它时,我更喜欢它。所以在其他方法上处理字符串要容易得多。可能?
public static void main(String[] args) {
ArrayList<String> newCustomer = new ArrayList<String>();
check_newCustomer (newCustomer);
}
public static void check_newCustomer(ArrayList<String> newCustomer) throws IOException {
String userID = null;
String firstname = null;
String secondname = null;
String street = null;
String zipcode = null;
String city = null;
// validity check before I fill the input fields
...
// fill arraylist
newCustomer.add(userID);
newCustomer.add(firstname);
newCustomer.add(secondname);
newCustomer.add(street);
newCustomer.add(zipcode);
newCustomer.add(village);
}
谢谢!
答案 0 :(得分:7)
不,ArrayList
中的值只是引用。您最初使用不同变量引用它的事实是无关紧要的。
你可以使用Map<String, String>
而不是...但是很多更清洁,因为有一个Customer
类,其中包含各种信息。如果您想要多个客户,则可以拥有List<Customer>
。
答案 1 :(得分:1)
需要创建一个Customer类,只需要一组字段。而不是字符串列表。
public class Customer {
String userID;
String firstname;
String secondname;
String street;
String zipcode;
String city;
}
在代码中:
Customer newCustomer = new Customer();
newCustomer.userID = ....
System.out.println(newCustomer.userID);
答案 2 :(得分:0)
当您传递check_newCustomer (newCustomer);
时,您只传递数组列表的副本。在这种情况下,原始数组列表newcustomer保持不变,而范围在方法check_newCustomer中的新副本是存储所有字符串的位置。您可以为Customers创建一个新类,也可以创建一个类,并将您的数组列表作为类变量,并将check_newCustomer作为类方法。在后一种情况下,它很简单。
class customer
ArrayList<String> newCustomer;
public static void main(String[] args) {
newCustomer = new ArrayList<String>();
check_newCustomer ();
}
public static void check_newCustomer() throws IOException {
String userID = null;
String firstname = null;
String secondname = null;
String street = null;
String zipcode = null;
String city = null;
// validity check before I fill the input fields
...
// fill arraylist
newCustomer.add(userID);
newCustomer.add(firstname);
newCustomer.add(secondname);
newCustomer.add(street);
newCustomer.add(zipcode);
newCustomer.add(village);
}
}
这必须有效。