2013-02-21 2 views
0

"테이블"클래스에 "행"클래스에 문자열을 추가하는 데 문제가 있습니다. 그래서 나는 행이라는 클래스를 만들 때마다 제출 된 문자열을 클래스 "테이블"의 동일한 인스턴스에 추가합니다. 어떤 도움이 정말 감사하겠습니다다른 클래스의 배열 목록에 문자열 추가

public class Table { 

    public ArrayList<String> applicants; 

    public String appArray[]; 

    /** 
    * Constructor for objects of class Table 
    */ 
    public Table() { 
     applicants = new ArrayList<String>(); 
    } 

    public void addApplicant(String app) { 
     applicants.add(app); 
     toArray(); 
    } 

    public void toArray() { 
     int x = applicants.size(); 
     appArray = applicants.toArray(new String[x]); 
    } 

    public void list() // Lists the arrayList 
    { 
     for(int i = 0; i < applicants.size(); i++) { 
      System.out.println(applicants.get(i)); 
     } 
    } 

    public void listArray() // Lists the Array[] 
    { 
     for(int i = 0; i < appArray.length; i++) { 
      System.out.println(appArray[i]); 
     } 
    } 
} 

:

여기
public class Row extends ArrayList<Table>{ 
public ArrayList<String> applicant; 
public String row; 
/** 
* Constructor for objects of class Row 
*/ 
public Row() 
{ 
    applicant = new ArrayList<String>(); 
    convertToString(); 
    applicants(row) //<------ This is the arrayList in the Table class that i wish to   add the row to 
} 

private void convertToString() 
{ 
    for(int i = 0; i<applicant.size(); i++) 
     { 
      row = applicant.toString(); 
     } 
} 
} 

내 "행"클래스 : 여기 내 행 클래스입니다.

+0

당신이 당신의 클래스라는 이름의이 방법으로 모든 지원자를 인쇄 할 수 아래의 방법 목록을 호출 할 때, 그것은 본다 // 테이블의 콜렉션. 'public class Table extends ArrayList '을 가지고 계셨습니까? –

+0

.convertToString() 작업을 생략 할 수 없습니까? 'ArrayList '(실제로는 비어 있도록 만들었습니다)을 전달하면 실제로 변환 할 필요가 없습니다. 또한 Row()의 생성자에서 전역 적으로 지원자를 사용하는 것처럼 보입니다. 이는 일반적이지 않습니다. – Gijs

+0

@SamDufel 네가 맞아. 테이블을 행 모음으로 원합니다. 그러나 나는 지금 변화를 만들었다. 내가 테이블 클래스의 toArray() 메서드를 컴파일하면 오류가 발생합니까? "테이블의 toArray()는 java.util.List의 toArray()를 구현할 수 없습니다. 반환 유형 void가 java.lang.Object []와 호환되지 않습니다. – Hoggie1790

답변

2

신청자 (행)는 행/테이블 클래스의 메소드가 아닙니다.

당신이 행 클래스의 Arrraylist에 행을 추가하려면

다음 추가 방법

applicant.add (행) 메서드를 사용합니다.

테이블 및 행 관계에서는 Table 클래스를 확장하는 Row 클래스를 만들 필요가 없습니다. 두 개의 별도 클래스 여야합니다. 그래서 Table과 Row 클래스는 일대 다 (One to Many) 관계를 가질 것입니다. 그래서 Row 클래스의 여러 인스턴스를 추가 할 수 있도록 Table 클래스를 수정하십시오.

나는 당신이 무엇을하려고하는지 알지 못하지만, 당신에게 Row 클래스는 rowID와 applicantName의 두 가지를 포함해야한다고 말하게한다. 그리고 각 신청자를 나타내는 많은 행을 갖는 테이블 클래스.

public class Row extends ArrayList<Table>{ 
String applicantName; 
int applicantID; 


/** 
* Constructor for objects of class Row 
*/ 
public Row(int appID, String appName) 
{ 
applicantName = appName; 
applicantID = appID; 

} 

public getApplicantName(){ 
return applicantName; 
} 

public getApplicantID(){ 
return applicantID; 
} 


} 

을 그리고 테이블 클래스는 다음과 같이 표시됩니다 :

그래서 행 클래스는 다소과 같이 표시됩니다

public class Table { 

    public ArrayList<Row> applicants; 

    public String appArray[]; 

    /** 
    * Constructor for objects of class Table 
    */ 
    public Table() { 
    applicants = new ArrayList<String>(); 
    } 

    public void addApplicant(Row app) { 
    applicants.add(app); 

    } 


    public void list() // Lists the arrayList 
    { 
    for(int i = 0; i < applicants.size(); i++) { 
     Row row = (Row) applicants.get(i); 
     System.out.println("Applicant ID: "+ row.getApplicantID() + 
     " Applicant Name: " + row.getApplicantName()); 
    } 
    } 

} 

그래서 아래의 방법으로 위의 클래스를 사용

Row r1 = new Row(1, "Tom"); 
Row r2 = new Row(2, "Hoggie"); 
Row r3 = new Row(3, "Julie"); 

테이블 테이블 = 새 테이블(); 행이처럼

table.addApplicant(r1); 
table.addApplicant(r2); 
table.addApplicant(r3); 

그래서 지금 당신이 // 자신의 식별자

table.list(); 
+0

Table 클래스의 배열에 행을 추가하려고합니다. 그것이 정말로 불분명하면 죄송합니다. 그래도 도움을 주셔서 감사합니다. – Hoggie1790

+0

@ Hoggie1790 행 클래스에 포함 할 내용은 무엇입니까? 한 명의 지원자라고 생각 하나? –

+0

예, Row 클래스에는 신청자가 한 명만 있어야합니다. – Hoggie1790

관련 문제