[英]Java no suitable constructor found
對於我的任務,我創建了一個名為Agency的類,它將存儲有關人才代理的數據,並且我創建了所需的屬性。 我也得到了一個我需要閱讀的數據文件。 但首先我要測試我的課程。 我可以使用getter和setter來顯示我想要的輸出但是現在我想創建對象Agency的新實例並添加它們的詳細信息但是我得到一條錯誤消息,說沒有找到合適的構造函數。 我已將設置與我的構造函數匹配,或者至少看不出我的錯誤。 任何幫助謝謝。
public class Agency {
//Attributes for class Agency
private String name;
private String[] address;
private String[] adminStaff;
private int phoneNumber;
private String type;
/**
*Constructor that creates object Agency
*/
public Agency() {
}
/**
* Constructor that creates object Agency with values
* @param name
* @param address
* @param adminStaff
* @param phoneNumber
* @param type
*/
public Agency(String name, String[] address, String[] adminStaff, int phoneNumber, String type) {
this.name = name;
this.address = address;
this.adminStaff = adminStaff;
this.phoneNumber = phoneNumber;
this.type = type;
}
/**
*
* @return
*/
public String getName() {
return name;
}
/**
*
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
*
* @return
*/
public String[] getAddress() {
return address;
}
/**
*
* @return
*/
public String[] getAdminStaff() {
return adminStaff;
}
/**
*
* @return
*/
public int getPhoneNumber() {
return phoneNumber;
}
/**
*
* @param phoneNumber
*/
public void setPhoneNumber(int phoneNumber) {
this.phoneNumber = phoneNumber;
}
/**
*
* @return
*/
public String getType() {
return type;
}
/**
*
* @param type
*/
public void setType(String type) {
this.type = type;
}
private String getArrayAsString(String[] a) {
String result = "";
/*for(int i = 0; i<a.length; i++)
{
result += a[i] +" ";
}*/
for(String s: a)
{
result += s + " ";
}
result = result.trim();
return result;
}
private String[] getStringAsArray(String a) {
String[] result = a.split(":");
return result;
}
public void setAddress(String Address) {
this.address = getStringAsArray(Address);
}
public void setAddress(String[] Address) {
this.address = Address;
}
public String getAddressAsString() {
return getArrayAsString(address);
}
public void setAdminStaff(String adminStaff) {
this.adminStaff = getStringAsArray(adminStaff);
}
public void setAdminStaff(String[] adminStaff) {
this.adminStaff = adminStaff;
}
public String getAdminStaffAsString() {
return getArrayAsString(adminStaff);
}
@Override
public String toString(){
return name +"\t"+ getAddressAsString() +"\t"+
getAdminStaffAsString() +"\t"+ phoneNumber +"\t"+ type + "\n";
}
}
我的主要課程
public class AgencyTest {
public static void main(String[] args) {
/*a.setName("Potters Talent Agency");
a.setAddress("126-182 Ashwood Road:Potters Bar:Hertfordshire EN6 2:UK");
a.setAdminStaff("Megan Speagle:Daron Spilman");
a.setPhoneNumber(2598052);
a.setType("All");
System.out.println(a.getName());
System.out.println(a.getAddressAsString());
System.out.println(a.getAdminStaffAsString());
System.out.println(a.getPhoneNumber());
System.out.println(a.getType());*/
Agency a = new Agency("Potters Talent Agency, 126-182 Ashwood Rd: Potters Bar: Hertfordshire EN6 2: UK, "
+ "Megan Speegle:Daron Spilman:Leonel Striegel:Hubert Tesoro:Nathanial Pompey, 2598052, All");
System.out.println(a);
}
注釋掉的行可以工作,但如果我嘗試從'Agency a = new Agency()'行完成所有操作,它將無效。
PLZ幫助我是一個新手,我可能使用了不好的術語,所以不確定它是否有意義我想嘗試做什么。
確定添加了一個新的構造函數,它將它作為一個字符串,但獲得了一個帶有整數值的錯誤,用於phonenumber。 這是代碼:
`public Agency(String csvString) {
String[] attributes =csvString.split(",");
int i = 0;
for(String s : attributes)
{
switch(i)
{
case 0:
this.name = s;
break;
case 1:
this.address = getStringAsArray(s);
break;
case 2:
this.adminStaff = getStringAsArray(s);
break;
case 3:
this.phoneNumber = getIntAsString(s);
break;
case 4:
this.type = s;
break;
}
我試圖將其轉換為字符串,但似乎不起作用。 更多代碼:
private String getIntAsString(int a){
String result = Integer.toString(a);
return result;
}
public String getPhoneNumberAsString() {
return getIntAsString(phoneNumber);
}
public void setPhoneNumber(int phoneNumber){
this.phoneNumber = phoneNumber;
}
i++;
}`
Agency a = new Agency("Potters Talent Agency ... EN6 2: UK, "
+ "Megan Speegle:Daron ... 2598052, All");
試圖調用同一個字符串構造和沒有這樣的構造存在。
您需要提供這樣的構造函數(將字符串拆分為其組件字段),或者自己拆分字符串並使用這些組件字段調用當前構造函數。
在線
Agency a = new Agency("Potters [...] All");
你基本上調用構造函數一個字符串作為其參數。 所以編譯器正在尋找這樣的構造函數:
Agency(String properties) { ... }
此構造函數不存在。 相反,你有一個構造函數
Agency(String name, String[] address, String[] adminStaff, int phoneNumber, String type) { ... }
它分別采用參數。 所以你必須這樣稱呼它:
Agency a = new Agency(
"Potters Talent Agency",
new String[] {"126-182 Ashwood Rd", "Potters Bar", "Hertfordshire EN6 2", "UK"},
new String[] {"Megan Speegle", "Daron Spilman", "Leonel Striegel", "Hubert Tesoro", "Nathanial Pompey"},
2598052,
"All"
);
你可以 - 或者 - 提供一個構造函數來獲取一個字符串,然后執行一些字符串魔法來反匯編這些部分。 這有點復雜且容易出錯,所以我建議不要這樣做。
看錯誤是在
Agency a = new Agency("Potters Talent Agency, 126-182 Ashwood Rd: Potters Bar: Hertfordshire EN6 2: UK, "
+ "Megan Speegle:Daron Spilman:Leonel Striegel:Hubert Tesoro:Nathanial Pompey, 2598052, All");
您只是將一個字符串傳遞給構造函數,並且您的類中沒有構造函數接受唯一的字符串作為參數。 所以正確地形成你的參數。
嘗試以這種方式創建對象
String myAddress[] = "BLR India".split(" ");
String myAdmin[] = "my admin array".split(" ");
Agency a = new Agency("MyName", myAddress, myAdmin, 1235678, "myType");
您正在使用錯誤的構造函數。 你現在擁有的是什么
Agency a = new Agency("Potters Talent Agency, 126-182 Ashwood Rd: Potters Bar: Hertfordshire EN6 2: UK, "
+ "Megan Speegle:Daron Spilman:Leonel Striegel:Hubert Tesoro:Nathanial Pompey, 2598052, All");
所以它期望一個只有單個字符串參數的構造函數,你沒有。
你應該做點什么
List<String> addr = new ArrayList<String>();
addr.add("126-182 Ashwood Rd");
addr.add("Potters bar");
addr.add("Hertfordshire EN6 2");
addr.add("UK");
List<String> adminStaff = new ArrayList<String>();
adminStaff.add("Megan Speegle");
adminStaff.add("Daron Spilman");
agency a = new Agency("Potters Talent Agency", addr.toArray(), adminStaff.toArray(),2598052, "All");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.