基本上我有一个类,它有使用String数组的方法,我在应用程序类中编写一个方法来读取文件并更新Customer类的对象数组。我得到的错误如下:
第83行:Customer中的set_address(java.lang.String [])无法应用于(java.lang.String) 在行审查[i] .set_address(st [1])。我知道它正在寻找一个字符串[]并且它正在接收一个字符串,但是有什么方法可以解决这个问题吗?这是我正在使用的代码。
import java.io.*;
import java.util.*;
class Customer {
int account_id;
char[] ch1 = new char[20];
String name = new String (ch1);
char[] ch2 = new char[80];
String address = new String (ch2);
char[] ch3 = new char[10];
String phone_number = new String (ch3);
char[] ch4 = new char[8];
String date_of_birth = new String (ch4);
double account_balance;
public int get_accountid(){
return account_id;
}
public String get_address(){
return address;
}
public String get_phone_number(){
return phone_number;
}
public String get_date_of_birth(){
return date_of_birth;
}
public double get_balance(){
return account_balance;
}
public void set_account_id(int num){
account_id = num;
}
public void set_address(String add){
address = add;
}
public void set_phone_number(String phone){
phone_number = phone;
}
public void set_date_of_birth(String dob){
date_of_birth = dob;
}
public void set_balance(double bal){
account_balance = bal;
}
Customer(){ // default constructor
}
// parametrized constructor
Customer(int id, String name, String add, String dob, String num, double bal){
this.account_id = id;
this.name = name;
this.address = add;
this.date_of_birth = dob;
this.phone_number = num;
this.account_balance = bal;
}
}
public class lab2{
public static void main(String args[]){
System.out.println("testing this shit");
}
public static void readFile(String filename){
Customer[] review = new Customer[30];
int i=0;
Scanner scan = new Scanner (new File (filename));
while (scan.hasNext()){
while(i<30){
review[i].set_account_id(scan.nextInt());
String[] st = scan.nextLine().split("=");
review[i].set_address(st[1]);
st = scan.nextLine().spilt("=");
review[i].set_phone_number(st[1]);
st = scan.nextLine().split("=");
review[i].set_date_of_birth(st[1]);
//st = scan.nextLine().split("=");
review[i].set_balance(scan.nextDouble());
scan.nextLine();
i=i+1;
}
}
}
}
答案 0 :(得分:3)
您的班级Customer
看起来像一个Java bean。我发现这些声明可疑:
String[] name = new String [20];
String[] address = new String [80];
String[] phone_number = new String [10];
String[] date_of_birth = new String [8];
为什么您希望Customer
有20个姓名,80个地址,10个电话号码和8个出生日期?我怀疑你的意图是说Customer
名称长度最多为20个字符,他/她的地址长度最多为80个字符,等等。如果是这样,那么你不想要String[]
。 1}},你可能想要一个char []!
但是,考虑简单地String
制作这些字段:这似乎更自然。我不明白你为什么要限制它们的大小。
答案 1 :(得分:1)
只需更改您的方法签名:
public void set_address(String add){
address = add;
}
或其他选择:您可以根据String对象创建一个新的String []对象,并传递: